欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > Node.js——http 模块(一)

Node.js——http 模块(一)

2025/1/16 16:54:42 来源:https://blog.csdn.net/qq_45902692/article/details/145066738  浏览:    关键词:Node.js——http 模块(一)

个人简介

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

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

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

文章目录

    • 前言
    • 创建 HTTP 服务
    • 请求信息
    • 解析请求路径
    • Simple Demo
    • 总结

前言

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

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


创建 HTTP 服务

创建一个基本的 HTTP 服务也很简单,只需要导入 http 模块后创建并监听服务对象即可。

const http = require('http')// 创建服务对象
const server = http.createServer((req, res) => {    // 解决响应内容中文乱码问题res.setHeader('content-type', 'text/html;charset=utf-8')// 设置响应体res.end('你好,Http Server')
})// 监听端口,启动服务
server.listen('9000', () => {console.log('服务启动成功...')
})

在这里插入图片描述

在这里插入图片描述

请求信息

编写如下代码,启动服务后刷新 9000 网页即可在控制台中查看请求行和请求头的相关信息。

  • method:获取请求的方法(GET / POST 等)
  • url:获取请求的 url
  • httpVersion:请求 HTTP 协议版本号
  • headers:请求头信息
const http = require('http')// 创建服务对象
const server = http.createServer((req, res) => {console.log('请求的方法:', req.method);console.log('请求的url:', req.url);console.log('HTTP协议版本号:', req.httpVersion);console.log('HTTP请求头', req.headers);// 解决响应内容中文乱码问题res.setHeader('content-type', 'text/html;charset=utf-8')// 设置响应体res.end('你好,Http Server')
})// 监听端口,启动服务
server.listen('9000', () => {console.log('服务启动成功...')
})

在这里插入图片描述


解析请求路径

原来使用 url.parse() 来解析路径,但这种方式已被弃用;新的方式是使用 new URL() 来解析路径。

  • href: 完整的 URL 字符串。
  • protocol: 协议部分(包括末尾的冒号),如 https:。
  • slashes: 一个布尔值,表示协议部分是否包含两个斜杠(//)。
  • auth: 认证信息部分(即用户名和密码),如 user:pass,如果没有则为 null。
  • host: 主机名(包括端口号,如果有的话),如 example.com:8080。
  • port: 端口号部分(作为字符串),如 8080。
  • hostname: 主机名部分(不包括端口号),如 example.com。
  • hash: URL 中的哈希部分(包括 # 符号),如 #hash。
  • search: URL 中的查询字符串部分(包括 ? 符号),如 ?search=test。
  • query: 查询字符串部分(不包括 ? 符号),被解析为一个查询对象,如 { search: ‘test’ }。注意,这是一个 querystring 模块解析后的对象。
  • pathname: URL 中的路径名部分,如 /pathname/。
  • path: pathname 和 search 的组合,如 /pathname/?search=test。
const http = require('http');
const url = require('url');const server = http.createServer((request, response) => {// 解析请求路径const myUrl = 'https://example.com:8080/pathname/?search=test#hash';const parsedUrl = new URL(myUrl);console.log("新方式", parsedUrl);console.log(parsedUrl.searchParams.get('search'));const parsedUrl2 = url.parse(myUrl);console.log('旧方式', url.parse(parsedUrl2));response.end('Hello HTTP')
})server.listen('9000', () => {console.log('服务启动成功...');
});

在这里插入图片描述

使用 get() 方法查询 search 的内容

parsedUrl.searchParams.get('search') // test

Simple Demo

下面我们编写一个小练习,实现网址上输入 /login 路由显示 登录页面,输入 register 路由显示 注册页面,输入 其他路由 显示 Not Found

const http = require('http')const server = http.createServer((request, response) => {// 获取请求的方法const { method } = request;// 获取请求的 url 路径const { pathname } = new URL(request.url, 'http:127.0.0.1');response.setHeader('content-type', 'text/html;charset=utf-8');if (method === 'GET' && pathname === '/login') {response.end('登录页面')} else if (method === 'GET' && pathname === '/register') {response.end('注册页面');} else {response.end('Not Found')}
})server.listen(9000, () => {console.log('服务启动成功...');
})

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


总结

本篇文章我们首先学习了如何创建一个 HTTP 服务,之后认识到了一些请求信息(如: method、url、headers等),再之后我们学习了使用 url.parse()new URL() 进行路径的解析,最后编写了一个简单的 Demo 巩固了相关 API 的使用。

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


参考资料:

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

在这里插入图片描述


版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com