Node.js——http 模块(二)

ops/2025/1/15 22:15:35/
http://www.w3.org/2000/svg" style="display: none;">

个人简介

👀个人主页: 前端杂货铺
🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展
📃个人状态: 研发工程师,现效力于中国工业软件事业
🚀人生格言: 积跬步至千里,积小流成江海
🥇推荐学习:🍍前端面试宝典 🎨100个小功能 🍉Vue2 🍋Vue3 🍓Vue2/3项目实战 🥝Node.js实战 🍒Three.js

🌕个人推广:每篇文章最下方都有加入方式,旨在交流学习&资源分享,快加入进来吧

内容参考链接
Node.js(一)Node.js——fs(文件系统)模块
Node.js(二)Node.js——path(路径操作)模块
Node.js(三)Node.js——http 模块(一)

文章目录

    • 前言
    • 设置 HTTP 响应报文
    • Simple Demo
    • 总结

前言

上篇文章我们学习了 path 模块,本篇文章我们学习 Node.js 的 http 模块。

http 模块是核心模块,它提供了 HTTP 服务器和客户端功能,主要用于前后端通信。


设置 HTTP 响应报文

下面,我们学习如何进行 HTTP 响应报文的设置,其实也很简单,只需要 response.xxx 调一些属性和方法即可。

  • statusCode: 设置响应状态码
  • statusMessage: 设置响应状态的描述
  • setHeader(): 设置响应头
  • write(): 设置响应体
const http = require('http');// 创建服务对象
const server = http.createServer((request, response) => {// 设置响应状态码response.statusCode = 201;// 设置响应状态的描述response.statusMessage = 'hi';// 设置响应头response.setHeader('content-type', 'text/html;charset=utf-8');response.setHeader('Server', 'Node.js');response.setHeader('DIYHeader', 'diy header');response.setHeader('test', ['a', 'b', 'c']);// 设置响应体response.write('Hello, ');response.write('This ');response.write('is ');response.write('zahuopu');response.end('!');
})// 监听端口,启动服务
server.listen('9000', () => {console.log('服务启动成功...')
})

https://i-blog.csdnimg.cn/direct/3ebc4965352e442d8f4d8d421e4ef137.png" alt="在这里插入图片描述" />


Simple Demo

下面我们编写一个小 Demo,实现响应页面信息(包括 html、css 和 js),设置 MIME 类型 并进行错误处理。

const http = require('http');
const fs = require('fs');
const path = require('path');// MIME类型(Multipurpose Internet Mail Extensions)是一种标准,用于表示文档、文件或字节流的性质和格式‌‌。
// 设置HTTP响应的 Content-Type 头部,以告诉浏览器如何处理返回的内容。
const mimes = {html: 'text/html',css: 'text/css',js: 'text/javascript',png: 'image/png',jpg: 'image/jpeg',gif: 'image/gif',mp4: 'video/mp4',mp3: 'audio/mpeg',json: 'application/json',
}const server = http.createServer((request, response) => {// 获取请求路径const { pathname } = new URL(request.url, 'http://127.0.0.1');// 拼接完整的文件路径const filePath = __dirname + pathname;fs.readFile(filePath, (err, data) => {// 处理错误信息if (err) {response.setHeader('content-text', 'text/html;charset=utf-8');switch (err.code) {// 未找到case 'ENOENT':response.statusCode = 404;response.end('<h1>404 Not Found</h1>');// 无权限case 'EPERM':response.statusCode = 403;response.end('<h1>403 Forbidden</h1>');// 其他错误default:response.statusCode = 500;response.end('<h1>Internal Server Error</h1>');}return;}// 获取文件后缀名const ext = path.extname(filePath).slice(1);// 获取对应的类型const type = mimes[ext];if (type) {if (ext === 'html') {response.setHeader('content-text', type + ';charset=utf-8');}} else {response.setHeader('content-type', 'application/octet-stream');}// 响应文件内容response.end(data);})
})server.listen('9000', () => {console.log('服务已启动...');
})

index.html 文件中编写如下内容:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><link rel="stylesheet" href="./index.css" /></head><body><h2>前端杂货铺</h2><script src="./index.js"></script></body>
</html>

index.css 文件中编写如下内容:

h2 {color: orange;
}

index.js 文件中编写如下内容:

const h2 = document.querySelector('h2');
h2.style.fontSize = 20 + 'px';
h2.style.fontWeight = 200;

启动服务后,访问 9000 端口

https://i-blog.csdnimg.cn/direct/27e57aaa763d46319d174e28282dc544.png" alt="在这里插入图片描述" />

https://i-blog.csdnimg.cn/direct/2ea4c1c043b24f4d9f7bdf57f738df90.png" alt="在这里插入图片描述" />

https://i-blog.csdnimg.cn/direct/8efb2989c1224d9199ddff91d8caf4ea.png" alt="在这里插入图片描述" />

https://i-blog.csdnimg.cn/direct/04b30e44005d4b148f4e228523359c13.png" alt="在这里插入图片描述" />


总结

本篇文章我们首先学习了 HTTP 响应报文,包括设置响应状态码、设置响应状态的描述、设置响应头和响应体等;此外,我们还编写了一个 Demo,学习如何响应页面信息、认识了 MIME 并学会了如何进行错误处理等。

好啦,本篇文章到这里就要和大家说再见啦,祝你这篇文章阅读愉快,你下篇文章的阅读愉快留着我下篇文章再祝!


参考资料:

  1. Node.js教程(菜鸟教程)
  2. Node.js零基础视频教程(尚硅谷 · 李强)

https://i-blog.csdnimg.cn/blog_migrate/3cf97cbd47fc0cd482bf8e677dab493e.png" alt="在这里插入图片描述" />



http://www.ppmy.cn/ops/149993.html

相关文章

springboot国际化

使用springboot开发程序时&#xff0c;如果有国际市场的需求&#xff0c;一般要考虑国际化&#xff0c;在spring中本身对国际化就有很好的支持&#xff0c;下面介绍如何使用springboot开发国际化服务。 正常来说&#xff0c;引入 spring-boot-starter-web 模块后自动就会包括了…

【计算机网络】深入浅出计算机网络

第一章 计算机网络在信息时代的作用 计算机网络已由一种通信基础设施发展成一种重要的信息服务基础设施 CNNIC 中国互联网网络信息中心 因特网概述 网络、互联网和因特网 网络&#xff08;Network&#xff09;由若干结点&#xff08;Node&#xff09;和连接这些结点的链路…

《2025 CES 国际消费电子展:科技狂潮,未来已来》

一、2025 CES 盛大启幕&#xff0c;全球科技共襄盛举 当地时间 1 月 7 日&#xff0c;备受瞩目的 2025CES&#xff08;国际消费电子展&#xff09;在美国拉斯维加斯盛大开幕。作为全球规模最大、影响力最深远的消费技术产业盛会&#xff0c;CES 自 1967 年举办以来&#xff0c…

Docker-compose Prometheus Grafana 安装

环境准备 #要在 Vim 中默认启用 set paste 和 set number&#xff0c; vim ~/.vimrc #在 .vimrc 文件中添加以下内容&#xff1a; set paste set number 安装 Docker Compose sudo curl -L "https://github.com/docker/compose/releases/download/2.31.1/docker-compos…

docker run一个镜像如何指定最大可使用的内存大小、cpu大小

在 Docker 中&#xff0c;你可以通过 --memory 和 --cpus 参数来指定容器的最大内存和 CPU 限制。这样可以确保容器不会超出特定的资源限制&#xff0c;从而避免影响主机的其他进程。 1. 限制内存&#xff08;--memory&#xff09; 通过 --memory 或 -m 参数&#xff0c;你可…

Linux系统编程之线程优先级

概述 在Linux系统中&#xff0c;线程优先级是影响多线程应用程序性能和响应速度的关键因素之一。通过合理设置线程优先级&#xff0c;可以确保关键任务得到及时处理&#xff0c;同时避免低优先级任务过度占用系统资源。 线程优先级是指操作系统根据一定的规则分配给每个线程的一…

超大规模分类(三):KNN softmax

传统的分类损失计算输入数据和每个类别中心的距离&#xff0c;来优化模型的训练。KNN softmax通过选择和输入数据最相关的top-K个类别&#xff0c;仅计算输入数据和top-K个类别中心的距离&#xff0c;以减小计算量。 KNN softmax首次诞生于达摩院机器智能技术实验室发表的SIGKD…

拉依达的嵌入式\驱动面试宝典》—Linux篇(四)_Linux驱动编程

《拉依达的嵌入式\驱动面试宝典》—Linux篇(四)_Linux驱动编程 你好,我是拉依达。 感谢所有阅读关注我的同学支持,目前博客累计阅读 27w,关注1.5w人。其中博客《最全Linux驱动开发全流程详细解析(持续更新)-CSDN博客》已经是 Linux驱动 相关内容搜索的推荐首位,感谢大家支…