广告
返回顶部
首页 > 资讯 > 服务器 >如何使用Node.js创建一个简单的HTTP服务器
  • 473
分享到

如何使用Node.js创建一个简单的HTTP服务器

2024-04-02 19:04:59 473人浏览 泡泡鱼
摘要

这篇文章主要介绍“如何使用node.js创建一个简单的Http服务器”,在日常操作中,相信很多人在如何使用node.js创建一个简单的HTTP服务器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方

这篇文章主要介绍“如何使用node.js创建一个简单的Http服务器”,在日常操作中,相信很多人在如何使用node.js创建一个简单的HTTP服务器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用Node.js创建一个简单的HTTP服务器”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

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

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

console.log('hello world');

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

如何使用Node.js创建一个简单的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.js创建一个简单的HTTP服务器

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

npm i -g nodemon

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

nodemon http-server.js

如何使用Node.js创建一个简单的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文件了

如何使用Node.js创建一个简单的HTTP服务器

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} ...`);
});

效果如下

如何使用Node.js创建一个简单的HTTP服务器

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

如何使用Node.js创建一个简单的HTTP服务器

注意:将音频文件流通过管道传到**resp**后,不需要调用**resp.end()**方法,因为这会关闭整个响应,导致音频文件无法获取

如何使用Node.js创建一个简单的HTTP服务器

如何使用Node.js创建一个简单的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.js创建一个简单的HTTP服务器

到此,关于“如何使用Node.js创建一个简单的HTTP服务器”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: 如何使用Node.js创建一个简单的HTTP服务器

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

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

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

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

下载Word文档
猜你喜欢
  • 如何使用Node.js创建一个简单的HTTP服务器
    这篇文章主要介绍“如何使用Node.js创建一个简单的HTTP服务器”,在日常操作中,相信很多人在如何使用Node.js创建一个简单的HTTP服务器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方...
    99+
    2022-10-19
  • 浅析用Node创建一个简单的HTTP服务器
    怎么使用NodeJS创建HTTP服务器?下面本篇文章给大家介绍一下使用Node创建一个简单的HTTP服务器的方法,希望对大家有所帮助!1. 使用Node.js直接运行JavaScript脚本node.js基于Chrome的v8引擎运行js代...
    99+
    2023-05-14
    Node.js node
  • 怎么用Node创建一个简单的HTTP服务器
    这篇文章主要介绍“怎么用Node创建一个简单的HTTP服务器”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用Node创建一个简单的HTTP服务器”文章能帮助大家解决问题。1. 使用Node.js...
    99+
    2023-07-04
  • 如何使用Node.js构建一个简单Web服务器
    Node.js是一个用于后端服务的JavaScript运行环境,它允许开发者使用同一种语言编写服务器端和客户端应用程序。与其他后端技术相比,Node.js具有更高的处理能力和更好的可扩展性。在这篇文章中,我们将介绍如何使用Node.js构建...
    99+
    2023-05-14
  • NodeJS创建最简单的HTTP服务器
    ☆ 引子 var http = require('http'); http.createServer(function(request, response){ response.writeHead...
    99+
    2022-06-04
    最简单 服务器 NodeJS
  • 如何使用 Dockerfile 创建一个简单容器
    目录Dockerfile写一个 Dockerfile优化 Dockerfilecontainer shellDockerfile Dockerfile 是用于指导 docker 创建...
    99+
    2022-11-13
  • 【Python】快速创建一个简易 HTTP 服务器(http.server)
    引言 http.server 是 socketserver.TCPServer 的子类,它在 HTTP 套接字上创建和监听,并将请求分派给处理程序。本文是关于如何使用 Python 的 http.s...
    99+
    2023-09-28
    python http server
  • 如何使用JavaScript创建一个简单的项目
    JavaScript 是一种非常有用的编程语言,它被广泛应用于 web 开发、构建单页应用等领域。因此,了解如何使用 JavaScript 创建项目,是每个 web 开发者都需要掌握的基础技能。在本文中,我们将介绍如何使用 JavaScri...
    99+
    2023-05-14
  • 使用NODE.JS创建一个WEBSERVER(服务器)的步骤
    目录什么是 nodejs 安装nodejs 如何使用node创建hello world? 如何使用nodejs读写文件使用nodejs创建web服务器如何根据不同的请求路径返回不同数...
    99+
    2022-11-12
  • sublime如何创建一个简单的网页
    这篇文章主要介绍了sublime如何创建一个简单的网页,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。方法步骤:在桌面上新建一个文件夹。打开文件夹在里面新建一个html文件。用...
    99+
    2023-06-15
  • 基于Python编写一个简单的http服务器
    目录什么是http分析http请求报文和响应报文格式手写一个简单的http服务器总结本篇文章的python版本为: 什么是http http是一个应用层协议,准确的来说是基于TCP...
    99+
    2023-05-17
    Python实现http服务器 Python http服务器 Python 服务器
  • 如何使用node.js搭建简单web服务器
    这篇文章给大家分享的是有关如何使用node.js搭建简单web服务器的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。准备首先,需要安装nodejs,这个可以去官网下载,目前我本地安...
    99+
    2022-10-19
  • 使用Node.js实现一个简单的FastCGI服务器实例
    本文是我最近对Node.js学习过程中产生的一个想法,提出来和大家一起探讨。 Node.js的HTTP服务器 使用Node.js可以非常容易的实现一个http服务,最简的例子如官方网站的示例: var ht...
    99+
    2022-06-04
    实例 简单 服务器
  • 轻松创建nodejs服务器(1):一个简单nodejs服务器例子
    我们先来实现一个简单的例子,hello world。 似乎每种语言教程的第一节都会讲这个,我们也不例外。 首先我们先创建一个项目目录,目录可自己定义,本案例的目录为 e:/nodetest/。 由于我们要搭...
    99+
    2022-06-04
    服务器 例子 轻松
  • 如何创建一个简单的mysql数据库
    今天小编给大家分享一下如何创建一个简单的mysql数据库的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来...
    99+
    2022-11-30
    mysql
  • 聊聊Go语言怎么构建一个简单的HTTP服务
    在如今的软件开发领域中,Go语言已经成为了极其活跃的语言之一。与其他语言相比,Go语言独特的并发模型和轻量级的线程架构使得它非常适合构建高并发的网络应用、分布式系统和云服务。本文将介绍如何使用Go语言构建一个简单的HTTP服务,并且涉及到如...
    99+
    2023-05-14
  • Python探索之实现一个简单的HTTP服务器
    Python标准库中的BaseHTTPServer模块实现了一个基础的HTTP服务器基类和HTTP请求处理类。这在文章python探索之BaseHTTPServer-实现Web服务器介绍中进行了相关的介绍。...
    99+
    2022-06-05
    简单 服务器 Python
  • 如何用python创建最简单的服务器
    今天就跟大家聊聊有关如何用python创建最简单的服务器,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。  本文使用socket实现,  使用python访问  下面,我们开始讲解实现...
    99+
    2023-06-02
  • 如何使用 Go 创建一个高效的 HTTP API?
    Go 是一种高效的编程语言,它的高并发性能和简单易学的语法使其成为构建 HTTP API 的首选语言之一。在这篇文章中,我们将介绍如何使用 Go 创建一个高效的 HTTP API,并给出一些示例代码。 创建一个简单的 HTTP API ...
    99+
    2023-07-23
    http api leetcode
  • 如何使用Node.js搭建HTTP服务器
    这篇文章将为大家详细讲解有关如何使用Node.js搭建HTTP服务器,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。什么是 HTTP 服务?HTTP 协议是什么?超文本传输协议,一个应用层协议,一个在计算机...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作