使用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中使用node-schedule实现定时任务实例

    下面我将为您介绍使用node-schedule实现定时任务的攻略,包括安装、使用,以及两个实例说明。 安装 node-schedule是一个npm包,可以通过npm命令来进行安装,具体步骤如下: 在命令行中输入以下命令以进行安装: npm install node-schedule –save 等待安装完成后,在需要使用node-schedule的文件中引…

    node js 2023年6月8日
    00
  • node中使用es6/7/8(支持性与性能)

    在Node中使用ES6/7/8语法需要经过一些配置和使用相关的工具,下面是具体的步骤: 1. 安装工具 安装babel和babel-cli,可用以下命令: $ npm install –save-dev babel babel-cli $ npm install –save-dev babel-preset-env 其中,babel-preset-env…

    node js 2023年6月8日
    00
  • PHP实现的一致性HASH算法示例

    下面我将给出“PHP实现的一致性HASH算法示例”的完整攻略,包含以下内容: 什么是一致性HASH算法? PHP实现一致性HASH算法的原理 PHP代码示例与详解 两个使用实例说明 什么是一致性HASH算法? 一致性HASH算法是一种特殊的HASH算法,它使用一个环状空间来存储数据。将数据的HASH值映射到环上,然后通过移动指针的方式,定位到数据在环上的位置…

    node js 2023年6月8日
    00
  • 一文带你了解前端包管理工具npm、yarn和pnpm

    一文带你了解前端包管理工具npm、yarn和pnpm 前言 前端包管理工具是前端开发中必不可少的工具之一,它可以帮助我们快速便捷地安装、升级、管理前端项目中的各种依赖包。本文主要介绍三种最常用的前端包管理工具npm、yarn和pnpm。 npm npm全称为Node Package Manager,是由Node.js官方提供的包管理工具。npm的特点为: 可…

    node js 2023年6月8日
    00
  • Nest.js系列学习控制器使用示例详解

    首先,感谢您对本网站“Nest.js系列学习控制器使用示例详解”攻略的关注。以下是本攻略的完整内容。 一、 概述 本攻略主要介绍了Nest.js控制器的使用。由于控制器是Nest.js应用程序中的核心部分,因此了解控制器和掌握其使用方法非常重要。 什么是Nest.js的控制器? Nest.js的控制器是处理网络请求的核心组件。控制器处理传入的请求并在向客户端…

    node js 2023年6月8日
    00
  • Node的文件系统你了解多少

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,具有非常强大的 I/O 、网络和文件系统能力。它的文件系统模块 (FileSystem) 可以让开发者轻松地访问计算机文件系统,读取、写入、删除文件等操作。 在Node.js中,文件系统模块被称为fs。要使用FS中提供的方法,只需在代码中导入fs模块。例如: const…

    node js 2023年6月8日
    00
  • nodejs制作一个文档同步工具自动同步到gitee中的实现代码

    制作一个文档同步工具自动同步到Gitee中需要以下步骤: 1. 初始化项目 在电脑中创建一个文件夹,打开命令行终端,进入该文件夹,初始化一个nodejs项目: npm init -y 2. 安装依赖 为了实现自动同步到Gitee,我们需要安装以下依赖: nodegit:操作git的nodejs库 chokidar:监控文档变化的nodejs库 执行以下代码安…

    node js 2023年6月8日
    00
  • Node中文件断点续传原理和方法总结

    下面是详细讲解“Node中文件断点续传原理和方法总结”的完整攻略。 简介 文件断点续传是指在文件下载或上传过程中,若因网络等原因中断,再次续传时可以从断点处接着传输,而不必重新开始。在Node.js中,我们可以使用HTTP断点续传头来实现文件断点续传。 HTTP断点续传头 HTTP断点续传头是指在HTTP请求头中设置Range和If-Range字段,从而实现…

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