广告
返回顶部
首页 > 资讯 > 服务器 >怎么用Node创建一个简单的HTTP服务器
  • 182
分享到

怎么用Node创建一个简单的HTTP服务器

2023-07-04 17:07:58 182人浏览 独家记忆
摘要

这篇文章主要介绍“怎么用node创建一个简单的Http服务器”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用Node创建一个简单的HTTP服务器”文章能帮助大家解决问题。1. 使用Node.js

这篇文章主要介绍“怎么用node创建一个简单的Http服务器”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用Node创建一个简单的HTTP服务器”文章能帮助大家解决问题。

1. 使用Node.js直接运行JavaScript脚本

node.js基于Chromev8引擎运行js代码,因此我们可以摆脱浏览器环境,直接在控制台中运行js代码,比如下面这个hello world代码

console.log('hello world');

控制台中直接使用node即可运行

怎么用Node创建一个简单的HTTP服务器

2. 创建一个简单的HTTP服务器

node.js的内置模块http提供了基本的http服务的能力,基于CommonJS规范,我们可以使用require导入http模块进行使用http模块中有一个createServer函数能够让我们创建一个http服务器其接收一个回调函数作为参数,这个回调函数接收两个参数 -- requestresponse

  • request包括所有客户端请求的信息,比如url、请求头header、请求方式和请求体等

  • response主要用于返回信息给客户端,封装了一些操作响应体相关的操作,比如response.writeHead方法就可以让我们自定义返回体的头部信息和状态码

当我们将响应体处理好了之后,调用response.end()方法就可以将响应体发送给客户端使用createServer函数只是帮我们创建了一个Server对象,并没有让其开启监听,我们还需要调用server对象的listen方法才可以进行监听,真正作为一个服务器开始运行

  • listen方法的第一个参数是监听的端口号,第二个参数则是绑定的主机ip,第三个参数是一个回调函数,会被http模块异步调用,当遇到错误的时候,就能够在这个回调函数的第一个参数中获取到抛出的异常 ,我们可以选择对异常进行处理,让我们的服务器更加健壮

下面是使用http模块创建一个简单服务器的例子

const { createServer } = require('http');const HOST = 'localhost';const PORT = '8080';const server = createServer((req, resp) => {  // the first param is status code it returns    // and the second param is response header info  resp.writeHead(200, { 'Content-Type': 'text/plain' });      console.log('server is working...');      // call end method to tell server that the request has been fulfilled  resp.end('hello nodejs http server');});server.listen(PORT, HOST, (error) => {  if (error) {    console.log('Something wrong: ', error);      return;  }    console.log(`server is listening on http://${HOST}:${PORT} ...`);});

可以直接尝试用node运行它,创造一个属于你的服务器!服务器运行后,浏览器访问http://localhost:8080即可访问到这个服务器

怎么用Node创建一个简单的HTTP服务器

也可以使用nodemon运行它,这样当我们的代码发生变化的时候就不需要手动终止程序再重新运行了

npm i -g nodemon

建议全局安装它,这样就可以直接使用,不需要通过npx nodemon去使用使用也很简单,直接将node命令改成nodemon命令即可

nodemon http-server.js

怎么用Node创建一个简单的HTTP服务器

3. 加上类型提示

前面我们在使用createServer以及resp对象的时候,看不到任何的语法提示,必须随时跟着node官方文档去边用边查,有点不方便但是没关系,我们可以使用ts.d.ts文件帮助我们提供语法提示功能,注意,我们不是使用ts进行开发,只是使用它的语法提示功能而已

  1. 初始化项目 -- npm init -y

  2. 安装@types/node -- pnpm i @types/node -D

  3. 在项目目录下创建jsconfig.JSON文件,将node_modules排除在外,没必要对其进行检查

{  "compilerOptions": {    "checkJs": true  },    "exclude": ["node_modules", "**/node_modulesconst createpdf = () => {   return new Promise((resolve, reject) => {       if (!fs.existsSync("example.pdf")) {             // create a PDFDocument object             const doc = new PDFDocument();              // create write stream by piping the pdf content.       doc.pipe(fs.createWriteStream("example.pdf"));                 // add some contents to pdf document      doc.fontSize(16).text("Hello PDF", 100, 100);                  // complete the operation of generating PDF file.      doc.end();    }    resolve("success");  });};

这里使用到了管道操作,将PDFDocument对象的内容通过管道传到新创建的写入流中,当完成操作后我们就通过resovle告知外界已经创建好pdf文件了然后在服务端代码中调用

const server = createServer(async (req, resp) => {  // change the MIME type to application/pdf  resp.writeHead(200, { "Content-Type": "application/pdf" });      // create pdf file    await createPdf();      // read created pdf file  fs.readFile("example.pdf", (err, data) => {      if (err) {        console.error(                "an error occurred while reading the pdf file content: ",        err      );            throw err;    }        console.log("operation success!");    resp.end(data);  });});server.listen(PORT, HOST, (error) => {  if (error) {      console.log("Something wrong: ", error);          return;  }    console.log(`server is listening on http://${HOST}:${PORT} ...`);});

现在浏览器就可以读取到创建的pdf文件了

8. 返回音频文件

思路依然是一样的,读取一个音频文件,然后通过管道将它送到resp对象中再返回即可

const { createServer } = require("http");const { stat, createReadStream } = require("fs");const HOST = "localhost";const PORT = 8080;const server = createServer((req, resp) => {  // change the MIME type to audio/mpe  resp.writeHead(200, { "Content-Type": "audio/mp3" });    const mp3FileName = "audio.mp3";  stat(mp3FileName, (err, stats) => {    if (stats.isFile()) {            const rs = createReadStream(mp3FileName);                  // pipe the read stream to resp      rs.pipe(resp);    } else {      resp.end("mp3 file not exists");    }  });});server.listen(PORT, HOST, (error) => {  if (error) {      console.log("Something wrong: ", error);      return;  }    console.log(`server is listening on http://${HOST}:${PORT} ...`);});

打开后就是一个播放音频的界面,这是chrome提供的对音频文件的展示,并且打开控制台会发现有返回音频文件

怎么用Node创建一个简单的HTTP服务器

注意:将音频文件流通过管道传到**resp**后,不需要调用**resp.end()**方法,因为这会关闭整个响应,导致音频文件无法获取怎么用Node创建一个简单的HTTP服务器

9. 返回视频文件

视频文件和音频文件的处理是一样的,只是MIME的类型要改成video/mp4,其他都一样

const { createServer } = require("http");const { stat, createReadStream } = require("fs");const HOST = "localhost";const PORT = 8080;const server = createServer((req, resp) => {  // change the MIME type to audio/mpe  resp.writeHead(200, { "Content-Type": "audio/mp4" });    const mp4FileName = "video.mp4";  stat(mp4FileName, (err, stats) => {      if (stats.isFile()) {           const rs = createReadStream(mp4FileName);           // pipe the read stream to resp      rs.pipe(resp);    } else {      resp.end("mp4 file not exists");    }  });});server.listen(PORT, HOST, (error) => {  if (error) {     console.log("Something wrong: ", error);     return;  }    console.log(`server is listening on http://${HOST}:${PORT} ...`);});

关于“怎么用Node创建一个简单的HTTP服务器”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网服务器频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: 怎么用Node创建一个简单的HTTP服务器

本文链接: https://www.lsjlt.com/news/346692.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么用Node创建一个简单的HTTP服务器
    这篇文章主要介绍“怎么用Node创建一个简单的HTTP服务器”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用Node创建一个简单的HTTP服务器”文章能帮助大家解决问题。1. 使用Node.js...
    99+
    2023-07-04
  • 浅析用Node创建一个简单的HTTP服务器
    怎么使用NodeJS创建HTTP服务器?下面本篇文章给大家介绍一下使用Node创建一个简单的HTTP服务器的方法,希望对大家有所帮助!1. 使用Node.js直接运行JavaScript脚本node.js基于Chrome的v8引擎运行js代...
    99+
    2023-05-14
    Node.js node
  • 如何使用Node.js创建一个简单的HTTP服务器
    这篇文章主要介绍“如何使用Node.js创建一个简单的HTTP服务器”,在日常操作中,相信很多人在如何使用Node.js创建一个简单的HTTP服务器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方...
    99+
    2022-10-19
  • NodeJS创建最简单的HTTP服务器
    ☆ 引子 var http = require('http'); http.createServer(function(request, response){ response.writeHead...
    99+
    2022-06-04
    最简单 服务器 NodeJS
  • 【Python】快速创建一个简易 HTTP 服务器(http.server)
    引言 http.server 是 socketserver.TCPServer 的子类,它在 HTTP 套接字上创建和监听,并将请求分派给处理程序。本文是关于如何使用 Python 的 http.s...
    99+
    2023-09-28
    python http server
  • 创建简单的node服务器实例(分享)
    话不多说直接上代码: var http = require('http') //对URL 解析为对象 //1.导入模块 URl模块 var url = require('url') var fs ...
    99+
    2022-06-04
    实例 简单 服务器
  • 聊聊Go语言怎么构建一个简单的HTTP服务
    在如今的软件开发领域中,Go语言已经成为了极其活跃的语言之一。与其他语言相比,Go语言独特的并发模型和轻量级的线程架构使得它非常适合构建高并发的网络应用、分布式系统和云服务。本文将介绍如何使用Go语言构建一个简单的HTTP服务,并且涉及到如...
    99+
    2023-05-14
  • 怎么用MyBatis创建一个简单的程序
    这篇文章主要介绍“怎么用MyBatis创建一个简单的程序”,在日常操作中,相信很多人在怎么用MyBatis创建一个简单的程序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用MyBatis创建一个简单的程序...
    99+
    2023-06-29
  • 怎么用pygame创建一个简单的窗口
    这篇文章主要介绍“怎么用pygame创建一个简单的窗口”,在日常操作中,相信很多人在怎么用pygame创建一个简单的窗口问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用pygame创建一个简单的窗口”的疑...
    99+
    2023-06-02
  • 基于Python编写一个简单的http服务器
    目录什么是http分析http请求报文和响应报文格式手写一个简单的http服务器总结本篇文章的python版本为: 什么是http http是一个应用层协议,准确的来说是基于TCP...
    99+
    2023-05-17
    Python实现http服务器 Python http服务器 Python 服务器
  • 轻松创建nodejs服务器(1):一个简单nodejs服务器例子
    我们先来实现一个简单的例子,hello world。 似乎每种语言教程的第一节都会讲这个,我们也不例外。 首先我们先创建一个项目目录,目录可自己定义,本案例的目录为 e:/nodetest/。 由于我们要搭...
    99+
    2022-06-04
    服务器 例子 轻松
  • Python探索之实现一个简单的HTTP服务器
    Python标准库中的BaseHTTPServer模块实现了一个基础的HTTP服务器基类和HTTP请求处理类。这在文章python探索之BaseHTTPServer-实现Web服务器介绍中进行了相关的介绍。...
    99+
    2022-06-05
    简单 服务器 Python
  • 怎么创建一个云服务器
    要创建一个云服务器,您可以按照以下步骤进行操作:1. 选择云服务提供商:根据您的需求和预算,选择一个可靠的云服务提供商。2. 注册并...
    99+
    2023-09-26
    云服务器
  • 怎么使用Python和Tkinter创建一个简单的闹钟程序
    这篇文章主要介绍了怎么使用Python和Tkinter创建一个简单的闹钟程序的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用Python和Tkinter创建一个简单的闹钟程序文章都会有所收获,下面我们一起...
    99+
    2023-07-05
  • 使用python怎么创建一个UDP服务器
    这篇文章给大家介绍使用python怎么创建一个UDP服务器,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。python的五大特点是什么python的五大特点:1.简单易学,开发程序时,专注的是解决问题,而不是搞明白语言本...
    99+
    2023-06-14
  • 如何使用Node.js构建一个简单Web服务器
    Node.js是一个用于后端服务的JavaScript运行环境,它允许开发者使用同一种语言编写服务器端和客户端应用程序。与其他后端技术相比,Node.js具有更高的处理能力和更好的可扩展性。在这篇文章中,我们将介绍如何使用Node.js构建...
    99+
    2023-05-14
  • 如何用python创建最简单的服务器
    今天就跟大家聊聊有关如何用python创建最简单的服务器,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。  本文使用socket实现,  使用python访问  下面,我们开始讲解实现...
    99+
    2023-06-02
  • 基于C++怎么编写一个简单的服务器
    这篇文章主要讲解了“基于C++怎么编写一个简单的服务器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“基于C++怎么编写一个简单的服务器”吧!先写个简易的controller基类继承反射基类,...
    99+
    2023-07-05
  • 使用nodejs搭建一个简易HTTP服务的实现示例
    目录先搭建一个简单的HTTP服务根据不同的请求地址返回不同的信息获取请求参数实现服务端设置(跨域)cookie和读取客户端发送的cookie本文只使用nodejs的http模块搭建一...
    99+
    2022-11-13
  • 怎么在SpringBoot中创建一个RSocket服务器
    这期内容当中小编将会给大家带来有关怎么在SpringBoot中创建一个RSocket服务器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。首先,检查是否安装了以下必备组件:Java8或更高版本的JavaSD...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作