Nodejs 第二十五章(http)

“http” 模块是 Node.js 中用于创建和处理 HTTP 服务器和客户端的核心模块。它使得构建基于 HTTP 协议的应用程序变得更加简单和灵活。

  1. 创建 Web 服务器:你可以使用 “http” 模块创建一个 HTTP 服务器,用于提供 Web 应用程序或网站。通过监听特定的端口,服务器可以接收客户端的请求,并生成响应。你可以处理不同的路由、请求方法和参数,实现自定义的业务逻辑。
  2. 构建 RESTful API:“http” 模块使得构建 RESTful API 变得简单。你可以使用 HTTP 请求方法(如 GET、POST、PUT、DELETE 等)和路径来定义 API 的不同端点。通过解析请求参数、验证身份和权限,以及生成相应的 JSON 或其他数据格式,你可以构建强大的 API 服务。
  3. 代理服务器:“http” 模块还可以用于创建代理服务器,用于转发客户端的请求到其他服务器。代理服务器可以用于负载均衡、缓存、安全过滤或跨域请求等场景。通过在代理服务器上添加逻辑,你可以对请求和响应进行修改、记录或过滤。
  4. 文件服务器:“http” 模块可以用于创建一个简单的文件服务器,用于提供静态文件(如 HTML、CSS、JavaScript、图像等)。通过读取文件并将其作为响应发送给客户端,你可以轻松地构建一个基本的文件服务器。

创建http服务器

const http = require('node:http')
const url = require('node:url')http.createServer((req, res) => {}).listen(98, () => {console.log('server is running on port 98')
})

我们前端发起请求 常用的就是 GET POST

那nodejs如何分清 GET 和 POST 呢

http.createServer((req, res) => {//通过method 就可以了if (req.method === 'POST') {} else if (req.method === 'GET') {}}).listen(98, () => {console.log('server is running on port 98')
})

完整版

const http = require('node:http'); // 引入 http 模块
const url = require('node:url'); // 引入 url 模块// 创建 HTTP 服务器,并传入回调函数用于处理请求和生成响应
http.createServer((req, res) => {const { pathname, query } = url.parse(req.url, true); // 解析请求的 URL,获取路径和查询参数if (req.method === 'POST') { // 检查请求方法是否为 POSTif (pathname === '/post') { // 检查路径是否为 '/post'let data = '';req.on('data', (chunk) => {data += chunk; // 获取 POST 请求的数据console.log(data);});req.on('end', () => {res.setHeader('Content-Type', 'application/json'); // 设置响应头的 Content-Type 为 'application/json'res.statusCode = 200; // 设置响应状态码为 200res.end(data); // 将获取到的数据作为响应体返回});} else {res.setHeader('Content-Type', 'application/json'); // 设置响应头的 Content-Type 为 'application/json'res.statusCode = 404; // 设置响应状态码为 404res.end('Not Found'); // 返回 'Not Found' 作为响应体}} else if (req.method === 'GET') { // 检查请求方法是否为 GETif (pathname === '/get') { // 检查路径是否为 '/get'console.log(query.a); // 打印查询参数中的键名为 'a' 的值res.end('get success'); // 返回 'get success' 作为响应体}}
}).listen(98, () => {console.log('server is running on port 98'); // 打印服务器启动的信息
});

如何调试?

image.png

安装完成之后编写简易的代码就可以直接发送请求了

[POST | GET | PUT] [URL] [http版本]

[请求头]

[传递的数据]

# POST http://localhost:98/post/xxx HTTP/1.1# Content-Type: application/json# {
#     "name":"小满zs"
# }GET http://localhost:98/get?a=1&b=2 HTTP/1.1

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

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

相关文章

Go和Java实现享元模式

Go和Java实现享元模式 下面通过一个实例来说明享元模式的使用。 1、享元模式 享元模式主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提 供了减少对象数量从而改善应用所需的对象结构的方式。 享元模式…

python接口自动化测试--requests使用和基本方法封装

之前学习了使用jmeterant做接口测试,并实现了接口的批量维护管理(大概500多条用例),对“接口”以及“接口测试”有了一个基础了解,最近找了一些用python做接口测试的资料,一方面为了学习下如何使用python进行接口测试(如何做出一个…

抖店需要多少资金?如何开通?具体流程如下!

我是电商珠珠 新手开抖店最关心的就是资金问题,在网上关于抖店的资金多少的都有,几百几千的都有。 各个回答都不一样。 另外一个问题就是怎么开通,今天我就来给大家详细的讲一下。 一、资金 入驻抖店需要办理一张个体工的营业执照&#…

Unity中URP下的顶点偏移

文章目录 前言一、实现思路二、实现URP下的顶点偏移1、在顶点着色器中使用正弦函数,实现左右摇摆的效果2、在正弦函数的传入参数中,加入一个扰度值,实现不规则的顶点偏移3、修改正弦函数的振幅 A,让我们的偏移程度合适4、修改正弦…

Linux/Windows IP | Team基础管理

引言 IP(Internet Protocol) 定义: IP(Internet Protocol)是网络传输数据的协议,负责在网络中唯一标识和定位设备,并提供数据传输的基础。功能: 允许计算机在网络上相互通信和交换…

C++ 在.h文件中包含头文件和在.cpp文件中包含头文件有什么区别?前置声明

现有两个文件Test.h 和Test.cpp #include 在Test.h中包含 和在Test.cpp中包含有什么区别? 1、在cpp文件中包含.h文件,要么你要用到这个头文件中的函数或者类,要么就是实现这个头文件; 2、.h —就是为了放一堆声明所产生的东西。 如果是定义…

VMware Ubuntu虚拟机忘记密码

​​原文 https://blog.csdn.net/ezconn/article/details/89328024​​​​​​​ 前言: 在VMware运行Ubuntu虚拟机时,开机之后忘记密码怎么办? 环境:Ubuntu版本:ubuntu-16.04.6-server-amd64;VMware版本…

乐理基础-弱起小节、弱起

弱起小节的定义: 1.音乐不是从强拍开始的,是从弱拍或次强拍开始的。 2.弱起小节会省去前面没有音乐的部分,它是不完整的小节,它的拍数是不够的。如图1 弱起小节的作用: 强拍经常要作为 和弦出现 和 变化的地方&#xf…

德人合科技 | 防止公司电脑文件数据资料外泄,自动智能透明加密保护系统

【透明加密软件】——防止公司电脑文件数据资料防止外泄,自动智能透明加密保护内部核心文件、文档、图纸、源代码、音视频等资料! PC端访问地址: www.drhchina.com 🌟 核心功能: 透明加密:采用高级加密算…

EasyExcel合并相同内容单元格及动态标题功能的实现

一、最初版本 导出的结果: 对应实体类代码: import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentLoopMerge; import com.al…

全链路压力测试:解析其主要特点

随着信息技术的飞速发展和云计算的普及,全链路压力测试作为一种关键的质量保障手段,在软件开发和系统部署中扮演着至关重要的角色。全链路压力测试以模拟真实生产环境的压力和负载,对整个业务流程进行全面测试,具有以下主要特点&a…

Nginx网站服务详解(Nginx服务的主配置文件 ——nginx.conf)

目录 一、全局配置的六个模块简介 二、Nginx配置文件的详解 1)全局配置模块 2)I/O 事件配置 3)HTTP 配置 4)web服务监听设置 5)其他设置 location常见配置指令:“root、alias、proxy_pass 对比&a…

【数据分享】2019-2023年我国地级市逐年新房房价数据(免费获取/Excel/Shp格式)

房价是一个城市发展程度的重要体现,一个城市的房价越高通常代表这个城市越发达,对于人口的吸引力越大!因此,房价数据是我们在各项城市研究中都非常常用的数据!之前我们分享了2019—2023年我国地级市逐月的新房房价数据…

揭秘`v-if`和`v-show`的区别:选择正确指令的技巧(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

EasyExcel模板导出(行和列自动合并)

1.需求背景: ①需要从第三方获取数据,第三方接口有两个参数,开始时间和结束时间 ②获取回来的数据并没有入库,所以不能通过数据库将数据归类统计,excel合并大概的流程是判断上一行或者左右相邻列是否相同,然后进行合并,所以不能是零散的数据且客户要求每一个自治区和每一个航站…

系统分析师(软考)知识点整理(一)

第一章 信息 信息是不确定性的减少 xi: n个状态中的第i个状态p(xi):出现第i个状态的概率b: b一般取值为2 特征 #mermaid-svg-pvPkY9RE5GZIIIxl {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-pvPkY9RE5GZIIIxl…

基本数据类型与 字符串相加的 知识点

在Java中,基本数据类型和字符串的相加操作会触发字符串连接(concatenation)操作。这是因为Java中的字符串是不可变的,即一旦创建,就不能修改。因此,当你将一个基本数据类型的值与字符串相加时,J…

系统学习Python——装饰器:基础知识-[函数装饰器:使用方法]

分类目录:《系统学习Python》总目录 函数装饰器已经从Python2.4开始可用。正如我们在前文所见到的,它们大体上是一种语法糖:在def语句结束时通过另一个函数来运行这个函数,把最初的函数名重新绑定到返回的结果。 函数装饰器是一种…

一篇文章带你了解各个程序员接单平台,让你选择不再迷茫!!!

相信现在很多程序员都已经走上了或者准备走上网上接单这条路,但是目前市面上的接单平台可谓五花八门,对于各个平台的优缺点,不同的程序员该如何选择适合自己的接单平台,你又是否了解呢? 接下来就让小编用一篇文章来为…

js对象转换为excel,excel转换为js对象

文章目录 前言js转excelexcel转js对象总结 前言 使用module.exports导出,require导入 修改后缀为mjs,可使用importd导入 ,export default \export导出(自用过一次,后面忘记怎么改的了) js转excel 需要安装nodejs node …