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

yizhihongxing

使用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基于fs模块对系统文件及目录进行读写操作的方法详解

    Node.js基于fs模块对系统文件及目录进行读写操作的方法详解 Node.js提供了fs模块(File System Module),用于对系统中的文件和目录进行读写操作。通过fs模块,可以实现文件的读取、写入、读取目录等操作。 读取文件内容 使用fs模块的readFile()方法可以读取指定文件内容,并将读取的内容传递给回调函数,如下所示: const …

    node js 2023年6月8日
    00
  • VUE 项目在IE11白屏报错 SCRIPT1002: 语法错误的解决

    针对“VUE 项目在IE11白屏报错 SCRIPT1002: 语法错误”的解决,可以按以下步骤进行: 问题分析 白屏报错 SCRIPT1002: 语法错误,是IE11对于语法不支持的情况下的报错信息。VUE项目在IE11中常遇到此类问题,通常是由于ES6语法不被IE11所支持而导致。因此,我们需要对VUE项目中涉及到的ES6语法进行转换或降级。 解决方案 安…

    node js 2023年6月8日
    00
  • NodeJS远程代码执行

    NodeJS远程代码执行是指攻击者通过网络将恶意代码传递到目标服务器上,并执行该代码。这种攻击方式往往能够导致服务器系统的完全崩溃或者数据泄露等严重后果,因此需要我们注意和提高防御能力。 下面是远程代码执行的攻击途径和防御措施: 攻击途径 由于网络协议漏洞或脆弱性的存在 通过注入不受信任或者非法内容到网络请求中 通过渗透 web 程序环境中的代码脆弱性,绕过…

    node js 2023年6月8日
    00
  • mongoose设置unique不生效问题的解决及如何移除unique的限制

    当使用 Mongoose 建立文档时,我们经常使用 unique 属性来保证某些字段的唯一性。但是,在实际开发过程中,我们可能会遇到设置了 unique 但并没有起到限制作用的问题。以下是 mongoose 设置 unique 不生效问题的解决方案及如何移除 unique 限制的攻略。 问题分析 在 Mongoose 中设置的 unique 属性不起作用,通…

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

    下面我就来为你详细讲解一下“node.js中的fs.chmodSync方法使用说明”的攻略。 标题 Node.js中的fs.chmodSync方法使用说明 简介 在Node.js的fs模块中,fs.chmodSync方法可以用来同步修改文件或目录的权限。该方法接受两个参数,分别是要修改权限的文件或目录的路径和最新的权限模式(mode)。权限模式是一个八进制数…

    node js 2023年6月8日
    00
  • Cookie跨域问题解决方案代码示例

    以下是 “Cookie跨域问题解决方案代码示例”的完整攻略,希望对你有所帮助。 什么是Cookie跨域问题 在前后端分离的架构中,前端会请求后端API接口来获取数据或其他操作。如果这个API接口是来自于不同的域名,使用Cookie就会遇到跨域问题。具体来说,浏览器的同源策略会禁止不同源之间的Cookie操作,这就导致了Cookie跨域问题。 Cookie跨域…

    node js 2023年6月8日
    00
  • 使用node.js中的Buffer类处理二进制数据的方法

    使用node.js中的Buffer类处理二进制数据的方法是一项非常重要的技能,以下是完整攻略。 什么是Buffer类? Buffer类是node.js中提供的一个数据结构,用于处理二进制数据,它的索引和元素都是以字节(byte)为单位。 创建Buffer实例 可以使用多种方式创建Buffer实例,比如: 通过已经存在的字符串创建 const str = ‘h…

    node js 2023年6月8日
    00
  • js在指定位置增加节点函数insertBefore()用法实例

    js在指定位置增加节点函数insertBefore()用法实例 什么是insertBefore()函数 insertBefore()函数是DOM操作中常用的一种方法,它可以在某个元素的子节点列表中插入一个新的子节点。它需要两个参数,第一个是要插入的新节点,第二个是已存在的节点,新节点将插入到现有节点的前面。 parentElement.insertBefor…

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