Node.js——http 模块(二)

个人简介

👀个人主页: 前端杂货铺
🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展
📃个人状态: 研发工程师,现效力于中国工业软件事业
🚀人生格言: 积跬步至千里,积小流成江海
🥇推荐学习:🍍前端面试宝典 🎨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('服务启动成功...')
})

在这里插入图片描述


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 端口

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


总结

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

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


参考资料:

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

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/65907.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

研华 PCI-1751 驱动更新导LabVIEW致程序异常

问题描述&#xff1a; 某 LabVIEW 程序长期运行正常&#xff0c;但在使用研华 PCI-1751 数据采集卡运行一段时间后&#xff0c;程序开始出现不正常的行为。具体过程如下&#xff1a; 初始问题&#xff1a; 更换新的 PCI-1751 板卡后&#xff0c;驱动程序被更新&#xff0c;但程…

接上篇基于Alertmanager 配置钉钉告警

Alertmanager 是一个用于处理和管理 Prometheus 警报的开源工具。它负责接收来自 Prometheus 服务器的警报&#xff0c;进行去重、分组、静默、抑制等操作&#xff0c;并通过电子邮件、PagerDuty、Slack 等多种渠道发送通知。 主要功能 去重&#xff1a;合并相同或相似的警报&…

网络原理(三)—— 传输层 之 UDP 和 TCP协议

传输层 在传输层两大关键的协议就是UDP和TCP协议了&#xff0c;除此之外&#xff0c;还有别的传输层协议&#xff0c;本文章将介绍UDP和TCP协议&#xff0c;重点介绍TCP协议。 首先回顾TCP和UDP 的特点&#xff1a; UDP&#xff1a;不可靠传输&#xff0c;面向数据包&#xf…

针对服务器磁盘爆满,MySql数据库始终无法启动,怎么解决

&#xff08;点击即可进入聊天助手&#xff09; 很多站长在运营网站的过程当中都会遇到一个问题,就是网站突然无法打开,数据一直无法启动 无论是强制重启还是,删除网站内的所有应用,数据库一直无法启动 这个时候,就需要常见的运维手段了,需要对服务器后台各个资源,进行逐一排查…

高性能现代PHP全栈框架 Spiral

概述 Spiral Framework 诞生于现实世界的软件开发项目是一个现代 PHP 框架&#xff0c;旨在为更快、更清洁、更卓越的软件开发提供动力。 特性 高性能 由于其设计以及复杂精密的应用服务器&#xff0c;Spiral Framework框架在不影响代码质量以及与常用库的兼容性的情况下&a…

【面试题】Spring/SpringBoot部分[2025/1/6 ~ 2025/1/12]

Spring/SpringBoot部分[2025/1/6 ~ 2025/1/12] 1. 说说 Spring 启动过程&#xff1f;2. 说说 Springboot 的启动流程&#xff1f;3. 你了解的 Spring 都用到哪些设计模式&#xff1f;4. Spring 有哪几种事务传播行为?5. SpringBoot 是如何实现自动配置的&#xff1f;6. Spring…

【机器学习:十八、更高级的神经网络概念】

1. 梯度下降法的改进&#xff1a;Adam算法 1.1 Adam算法简介 Adam&#xff08;Adaptive Moment Estimation&#xff09;是一种优化算法&#xff0c;结合了动量梯度下降和 RMSProp 的优点&#xff0c;在处理稀疏梯度和高维空间优化时表现尤为出色。其核心在于动态调整每个参数…

计算机网络之---VPN与隧道协议

VPN与隧道协议 VPN&#xff08;虚拟专用网络&#xff09;和隧道协议是现代网络安全技术的重要组成部分&#xff0c;它们主要用于在不安全的公共网络&#xff08;如互联网&#xff09;上建立一个安全的私密网络连接。VPN通过加密通信和认证机制&#xff0c;确保数据的隐私性和完…

【STM32-学习笔记-6-】DMA

文章目录 DMAⅠ、DMA框图Ⅱ、DMA基本结构Ⅲ、不同外设的DMA请求Ⅳ、DMA函数Ⅴ、DMA_InitTypeDef结构体参数①、DMA_PeripheralBaseAddr②、DMA_PeripheralDataSize③、DMA_PeripheralInc④、DMA_MemoryBaseAddr⑤、DMA_MemoryDataSize⑥、DMA_MemoryInc⑦、DMA_DIR⑧、DMA_Buff…

SQL Server中可以通过扩展事件来自动抓取阻塞

在SQL Server中可以通过扩展事件来自动抓取阻塞&#xff0c;以下是详细流程&#xff1a; 开启阻塞跟踪配置&#xff1a; • 执行以下SQL语句来启用相关配置&#xff1a; EXEC sp_configureshow advanced options, 1; RECONFIGURE; EXEC sp_configure blocked process thresh…

DNS解析域名简记

域名通常是由: 权威域名.顶级域名.根域名组成的。 从左往右&#xff0c;级别依次升高&#xff0c;这和外国人从小范围到大范围的说话习惯相关。&#xff08;我们自己是更习惯先说大范围再说小范围&#xff0c;如XX省XX市XX区XX路&#xff09; DNS解析域名时&#xff0c;会先查…

【爬虫】单个网站链接爬取文献数据:标题、摘要、作者等信息

源码链接&#xff1a; https://github.com/Niceeggplant/Single—Site-Crawler.git 一、项目概述 从指定网页中提取文章关键信息的工具。通过输入文章的 URL&#xff0c;程序将自动抓取网页内容 二、技术选型与原理 requests 库&#xff1a;这是 Python 中用于发送 HTTP 请求…

关于扫描模型 拓扑 和 传递贴图工作流笔记

关于MAYA拓扑和传递贴图的操作笔记 一、拓扑低模: 1、拓扑工作区位置: 1、准备出 目标 高模。 (高模的状态如上 ↑ )。 2、打开顶点吸附,和建模工具区,选择四边形绘制. 2、拓扑快捷键使…

解决无法远程管理Windows Server服务器核心安装

问题 有时&#xff0c;人们会为了节省运算资源&#xff0c;例如运行Hyper-V虚拟机&#xff0c;而选择Windows Server核心安装&#xff0c;即无图形化界面。这时&#xff0c;我们就只能通过Powershell命令对其进行操控&#xff0c;或为了获得图形化界面而使用远程服务器管理工具…

SQL HAVING 子句深入解析

SQL HAVING 子句深入解析 介绍 SQL&#xff08;Structured Query Language&#xff09;是一种用于管理关系数据库管理系统的标准编程语言。在SQL中&#xff0c;HAVING子句是与GROUP BY子句一起使用的&#xff0c;用于筛选分组后的数据。它根据聚合函数的结果对组进行条件过滤…

【计算机网络】lab7 TCP协议

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;计算机网络_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 实验目的…

JavaRestClient 客户端初始化+索引库操作

1. 介绍 ES官方提供了各种不同语言的客户端&#xff0c;用来操作ES。这些客户端的本质就是组装DSL语句&#xff0c;通过http请求发送给ES。 Elasticsearch目前最新版本是8.0&#xff0c;其java客户端有很大变化。不过大多数企业使用的还是8以下版本 2. 客户端初始化 在elastic…

【JVM-2.2】使用JConsole监控和管理Java应用程序:从入门到精通

在Java应用程序的开发和运维过程中&#xff0c;监控和管理应用程序的性能和资源使用情况是非常重要的。JConsole是Java Development Kit&#xff08;JDK&#xff09;自带的一款图形化监控工具&#xff0c;它可以帮助开发者实时监控Java应用程序的内存、线程、类加载以及垃圾回收…

基于html5实现音乐录音播放动画源码

源码介绍 基于html5实现音乐录音播放动画源码是一款类似Shazam的UI&#xff0c;点击按钮后&#xff0c;会变成为一个监听按钮。旁边会有音符飞入这个监听按钮&#xff0c;最后转换成一个音乐播放器。 效果预览 源码获取 基于html5实现音乐录音播放动画源码

《自动驾驶与机器人中的SLAM技术》ch1:自动驾驶

目录 1.1 自动驾驶技术 1.2 自动驾驶中的定位与地图 1.1 自动驾驶技术 1.2 自动驾驶中的定位与地图 L2 在技术实现上会更倾向于实时感知&#xff0c;乃至可以使用感知结果直接构建鸟瞰图&#xff08;bird eye view, BEV&#xff09;&#xff0c;而 L4 则依赖离线地图。 高精地…