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.hqwc.cn/news/286687.html

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

相关文章

LVGL 移植

LVGL 移植 LVGL简介移植步骤获取LVGL源码添加LVGL源码编写MakeFile显示设备驱动输入设备驱动文件系统 LVGL简介 LVGL(Light and Versatile Graphics Library)是一个免费的轻量级开源图形库,其主要特征有: 丰富的部件&#xff1a…

大数据机器学习-梯度下降:从技术到实战的全面指南

大数据机器学习-梯度下降:从技术到实战的全面指南 文章目录 大数据机器学习-梯度下降:从技术到实战的全面指南一、简介什么是梯度下降?为什么梯度下降重要? 二、梯度下降的数学原理代价函数(Cost Function)…

JAVA的三大版本

🍎个人主页 🏆​​​​​​​个人专栏:日常聊聊 ⛳️ 功不唐捐,玉汝于成 目录 前言 一、Java 二、JavaSE(Java Standard Edition) 三、JavaME(Java Micro Edition) 四、JavaE…

火柴棍等式c语言

分析&#xff1a;我们可以枚举等式&#xff0c;在判断这些等式是由多少根火柴组成&#xff0c;在把火柴数量和之前输入的比较&#xff0c;如果相等&#xff0c;那么就统计一次&#xff0c;注意的是等号和加号需要减去四根。 #include <stdio.h> int f(int a){//判断某一…

Nodejs 第二十六章(反向代理)

什么是反向代理? 反向代理&#xff08;Reverse Proxy&#xff09;是一种网络通信模式&#xff0c;它充当服务器和客户端之间的中介&#xff0c;将客户端的请求转发到一个或多个后端服务器&#xff0c;并将后端服务器的响应返回给客户端。 负载均衡&#xff1a;反向代理可以根…

二、W5100S/W5500+RP2040之MicroPython开发<DHCP示例>

文章目录 1 前言2 相关网络信息2 .1 简介2.2 DHCP工作原理2.3 DHCP的优点2.4 应用场景 3 WIZnet以太网芯片4 DHCP网络设置示例概述以及使用4.1 流程图4.2 准备工作核心4.3 连接方式4.4 主要代码概述4.5 结果演示 5 注意事项6 相关链接 1 前言 在这个智能硬件和物联网时代&#…

Linux软件管理rpm和yum

rpm方式管理 rpm软件包名称: 软件名称 版本号(主版本、次版本、修订号) 操作系统 -----90%的规律 #有依赖关系,不能自动解决依赖关系。 举例&#xff1a;openssh-6.6.1p1-31.el7.x86_64.rpm 数字前面的是名称 数字是版本号&#xff1a;第一位主版本号&#xff0c;第二位次版本…

C++数据结构——二叉搜索树详解

目录 一&#xff0c;关于二叉搜索树 1.1 概念 1.2 基本结构 二&#xff0c;二叉搜索树接口实现 2.1 插入 2.2 查找 2.3 打印 2.4* 删除 三&#xff0c;二叉搜索树接口递归实现 3.1 查找 3.2 插入 3.3 删除 四&#xff0c;二叉搜索树的默认成员函数 五&#xff0c;…

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

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

软件测试面试:测试基础题

软件测试的流程是什么&#xff1f;&#xff08;测试流程&#xff09; &#xff08;1&#xff09;需求调查&#xff1a;全面了解系统概况、应用领域、软件开发周期、软件开发环境、开发组织、时间安排、功能需求、性能需求、质量需求及测试要求等。根据系统概况进行项目所需的人…

杰发科技AC7840——SPM电源管理之低功耗模式

0、SPM简介 很早以前就听过低功耗模式&#xff0c;一直没有怎么深入了解&#xff0c;最近遇到几个项目都是跟低功耗有关。正好AutoChips的芯片都有电源管理的功能&#xff0c;在此借用AC7840的SPM对低功耗进行测试。 1、AC7840的5种功耗模式 2、AC7840的模式转换 3、唤醒 在…

iOS问题记录 - iOS 17通过NSUserDefaults设置UserAgent无效

文章目录 前言开发环境问题描述问题分析解决方案最后 前言 最近维护一个老项目时遇到的问题。说起这老项目我就有点头疼&#xff0c;一个快十年前的项目&#xff0c;这么说你可能不觉得有什么&#xff0c;但是你想想Swift也才发布不到十年&#xff08;2014年6月发布&#xff0…