使用nodejs搭建一个简易HTTP服务的实现示例

使用Node.js可以搭建一个简易的HTTP服务。下面是实现此功能的攻略:

步骤一:安装Node.js

在Node.js官网中 https://nodejs.org/zh-cn/下载并安装Node.js。

步骤二:创建项目

在命令行中输入以下指令创建项目:

mkdir node_http_server
cd node_http_server
npm init

npm init将根据项目的需求生成package.json文件。

步骤三:安装依赖

在项目目录下执行以下指令:

npm install --save http

此处使用 http 模块作为实现web服务器的基础模块。

步骤四:创建 HTTP 服务器

创建 server.js,将以下代码复制进去:

const http = require('http')

const hostname = '127.0.0.1'
const port = 8080

const server = http.createServer((req, res) => {
  res.statusCode = 200
  res.setHeader('Content-Type', 'text/plain')
  res.end('Hello World\n')
})

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`)
})

运行以下命令启动服务器:

node server.js

在浏览器中输入http://127.0.0.1:8080,您将看到Hello World。

示例说明1: 返回HTML页面

我们现在来更改刚才的代码以返回HTML页面。创建一个名为index.html的文件并将以下代码复制到其中:

<!DOCTYPE html>
<html>
<head>
  <title>Node.js HTTP Server</title>
</head>
<body>
  <h1>Hello World!</h1>
</body>
</html>

然后在server.js中用以下代码更改:

const http = require('http')
const fs = require('fs')
const path = require('path')

const hostname = '127.0.0.1'
const port = 8080

const server = http.createServer((req, res) => {
  console.log('Request for ' + req.url + ' by method ' + req.method)

  if (req.method == 'GET') {
    var fileUrl
    if (req.url == '/') fileUrl = '/index.html'
    else fileUrl = req.url

    var filePath = path.resolve('./public' + fileUrl)
    const fileExt = path.extname(filePath)
    if (fileExt == '.html') {
      fs.exists(filePath, (exists) => {
        if (!exists) {
          res.statusCode = 404
          res.setHeader('Content-Type', 'text/html')
          res.end('<html><body><h1>Error 404: ' + fileUrl + ' not found</h1></body></html>')
          return
        }
        res.statusCode = 200
        res.setHeader('Content-Type', 'text/html')
        fs.createReadStream(filePath).pipe(res)
      })
    }
    else {
      res.statusCode = 404
      res.setHeader('Content-Type', 'text/html')
      res.end('<html><body><h1>Error 404: ' + fileUrl + ' not a HTML file</h1></body></html>')
      return
    }
  }
  else {
    res.statusCode = 404
    res.setHeader('Content-Type', 'text/html')
    res.end('<html><body><h1>Error 404: ' + req.method + ' not supported</h1></body></html>')
    return
  }
})

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`)
})

现在访问http://127.0.0.1:8080/,您将看到index.html中的Hello World。

示例说明2: 返回JSON数据

我们现在来更改刚才的代码以返回JSON数据:

const http = require('http')

const hostname = '127.0.0.1'
const port = 8080

const server = http.createServer((req, res) => {
  console.log('Request for ' + req.url + ' by method ' + req.method)

  if (req.method == 'GET') {
    if (req.url == '/data') {
      res.statusCode = 200
      res.setHeader('Content-Type', 'application/json')
      res.setHeader('Access-Control-Allow-Origin', '*')
      res.end(JSON.stringify({
        message: 'Hello World!',
        code: 200
      }))
    }
    else {
      res.statusCode = 404
      res.setHeader('Content-Type', 'text/html')
      res.end('<html><body><h1>Error 404: ' + req.url + ' not found</h1></body></html>')
    }
  }
  else {
    res.statusCode = 404
    res.setHeader('Content-Type', 'text/html')
    res.end('<html><body><h1>Error 404: ' + req.method + ' not supported</h1></body></html>')
  }
})

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`)
})

现在访问http://127.0.0.1:8080/data,您将看到JSON数据。

这个攻略覆盖了如何使用Node.js搭建简易的HTTP服务的基础和示例说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用nodejs搭建一个简易HTTP服务的实现示例 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • Node.js API详解之 timer模块用法实例分析

    Node.js API详解之 timer模块用法实例分析 在Node.js中,timer模块提供了定时器相关的API,用于实现各种与时间相关的功能。本文将对timer模块的用法进行详细分析。 setTimeout(callback, delay[, …args]) setTimeout函数用于在指定的时间后执行一次回调函数。其用法如下: setTimeo…

    node js 2023年6月8日
    00
  • nodejs使用Sequelize框架操作数据库的实现

    当使用Node.js开发Web应用时,数据库是难以避免的,Sequelize是一个优秀的ORM(Object-Relational Mapping, 对象关系映射)框架,它能够让开发者通过JavaScript的方式操作数据库,这里提供一份使用Sequelize框架操作数据库的攻略。 安装Sequelize 在开始使用Sequelize之前,需要先安装它。可以…

    node js 2023年6月8日
    00
  • node.js中的fs.unlinkSync方法使用说明

    下面是详细的攻略: Node.js中的fs.unlinkSync方法使用说明 简介 在Node.js中,fs.unlinkSync方法用于同步删除指定的文件。该方法会立即删除指定的文件,如果文件不存在,则会抛出异常。 该方法属于fs模块中的一个同步方法,用于对文件进行操作。在使用该方法时需要特别注意,因为在同步模式下,如果该方法执行的时间过长,则会阻塞整个N…

    node js 2023年6月8日
    00
  • node + multer 实现文件上传过程

    下面是关于使用 node + multer 实现文件上传的攻略: 1. 安装和引入 multer Multer 是一个处理文件上传的 node.js 中间件。首先需要在命令行中使用 npm 安装 multer 包: npm install multer –save 安装完成后,在 Node.js 脚本中引入 multer: const multer = r…

    node js 2023年6月8日
    00
  • node工作线程worker_threads的基本使用

    下面我将详细讲解“node工作线程worker_threads的基本使用”的完整攻略。 基本介绍 Node.js是一款基于V8引擎的JavaScript环境,因其高效、轻量、可扩展性强等特点,近年来备受各大企业的青睐。Node.js使用多个事件循环线程来处理并发请求,但在单个线程下,通过worker_threads模块可以实现多线程操作,提高代码执行效率。w…

    node js 2023年6月8日
    00
  • Node.JS中的模块、exports和module讲解

    Node.js中的模块、exports和module是Node.js中非常重要的概念,可以帮助我们编写可重用的代码。在本篇攻略中,我们主要讲解Node.js中的模块系统和如何使用exports和module来导出和引入模块。 Node.js中的模块 Node.js中的模块是独立的代码单元,每个模块都定义了自己的命名空间。可以通过require函数将模块导入到…

    node js 2023年6月8日
    00
  • npm打包失败排查的全过程

    当我们在使用npm进行打包时,有时会遇到打包失败的情况。下面是一份npm打包失败排查的全过程攻略。 步骤一:确认错误信息 当npm打包失败时,首先要查看错误信息以确定问题所在。错误信息通常会出现在终端输出中。一般包含一些关键字,比如“ERROR”、“FAILED”等等。通过仔细阅读错误信息,可以大概确定造成打包失败的原因。 步骤二:检查npm配置 如果错误信…

    node js 2023年6月8日
    00
  • 理解Koa2中的async&await的用法

    首先我们需要明确几个概念: async:用来声明异步函数,在函数前面加上async关键字,表示函数里面可能会有异步操作。 await:用于等待异步任务执行完成,常用于等待异步函数的结果,会暂停代码执行直到异步任务完成。 在Koa2中,我们常用async和await来处理异步代码,下面我们来详细讲解它们的用法。 一、async 在Koa2中使用async关键字…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部