当前位置: 首页 > news >正文

node.js 实战——(Http 知识点学习)

HTTP

又称为超文本传输协议
是一种基于TCP/IP的应用层通信协议;这个协议详细规定了 浏览器 和万维网 服务器 之间互相通信的规则。协议中主要规定了两个方面的内容:

  • 客户端:用来向服务器发送数据,可以被称之为请求报文
  • 服务端:向客户端返回数据,可以被称之为响应报文

请求报文

请求报文
请求行
请求头
空行
请求体

在这里插入图片描述

请求头

格式: 请求头名:值

请求头说明
Host主机名
Connection连接的设置 keep-alive(保持连接);close(关闭连接)
User-Agent用户代理,客户端字符串标识,服务器可以通过这个标识来识别这个请求来自
哪个客户端 ,一般在PC端和手机端的区分
Accept设置浏览器接收的数据类型
Accept-Encoding设置接收的压缩方式
CookieCookie值

请求体

请求体内容的格式是非常灵活的,
(可以是空)> GET请求,
(也可以是字符串,还可以是JSON)
=> POST请求

响应报文

响应报文
响应行
响应头
空行
响应体

响应头

在这里插入图片描述

node 中使用Http

创建Http服务端

//1. 导入 http 模块
const http = require('http');
//2. 创建服务对象 create 创建 server 服务
// request 意为请求. 是对请求报文的封装对象, 通过 request 对象可以获得请求报文的数据
// response 意为响应. 是对响应报文的封装对象, 通过 response 对象可以设置响应报文
const server = http.createServer((request, response) => {
response.end('Hello HTTP server');
});
//3. 监听端口, 启动服务
server.listen(3000, () => {
console.log('服务已经启动, 端口 3000 监听中...');
});

1、当服务启动后,更新代码必须重启服务才能生效;当然你也可以安装nodemon 来解决这个问题
2、如果响应内容中出现中文乱码,可以在响应头设置如下代码解决
response.setHeader(‘content-type’,‘text/html;charset=utf-8’);

获取请求行和请求头

方法说明
request.method获取请求方法
request.url获取请求路径,只包含url中的路径与查询字符串
request.headers获取请求头内容

获取请求体

const http = require('http')const server = http.createServer((req, res) => {let body="";req.on('data',(chunk) => {body += chunk;})req.on('end', () => {res.end('table');})
})server.listen(9000, () => {console.log('Listening on port 9000,')
})

获取请求路径与查询字符串

引入url模块

const http = require('http')
const url = require('url')
const server = http.createServer((req, res) => {let res =url.parse(req.url)//路径let path=res.pathname;//查询字符串url.parse(req.url,true);
})server.listen(9000, () => {console.log('Listening on port 9000,')
})

直接实例化URL对象

const http = require('http')
const server = http.createServer((req, res) => {let url = new URL(req.url,"http://"+req.headers.host);res.setHeader('Content-Type','text/html; charset=utf-8');if(url.pathname==='/login'){res.end('登陆页面')}else if(url.pathname==='/reg'){res.end('注册页面')}else{res.end('欢迎你')}
})server.listen(9000, () => {console.log('Listening on port 9000,')
})

设置HTTP响应报文

语法说明
response.statusCode设置响应状态码
response.statusMessage设置响应状态描述
response.setHeader(‘头名’, ‘头值’)设置响应头信息
response.write(‘xx’)
response.end(‘xxx’)
设置响应体
http://www.xdnf.cn/news/112159.html

相关文章:

  • 使用PyTorch如何配置一个简单的GTP
  • Framework.jar里的类无法通过Class.forName反射某个类的问题排查
  • FPGA上实现YOLOv5的一般过程
  • 机器学习特征工程中的数值分箱技术:原理、方法与实例解析
  • 看一看 中间件Middleware
  • mapbox高阶,高程影像、行政区边界阴影效果实现
  • 开源项目实战学习之YOLO11:ultralytics-cfg-datasets-lvis.yaml文件(五)
  • 长城杯铁人三项初赛-REVERSE复现
  • Linux常见指令介绍下(入门级)
  • 手搓雷达图(MATLAB)
  • Java24新增特性
  • C语言数据结构之顺序表
  • 从代码学习深度学习 - 图像增广 PyTorch 版
  • 解决VSCode每次SSH连接服务器时,都需要下载vscode-server
  • Rust 2025:内存安全革命与异步编程新纪元
  • 大模型技术全景解析:从基础架构到Prompt工程
  • 无感字符编码原址转换术——系统内存(Mermaid文本图表版/DeepSeek)
  • 7.9 Python+Click实战:5步打造高效的GitHub监控CLI工具
  • #define STEUER_A_H {PWM_A_ON}
  • CSS3 基础(背景-文本效果)
  • 04-stm32的标准外设库
  • TI MSP430搭配 SD NAND(贴片式T卡):长续航心电监测的可靠保障
  • 关于按键映射软件的探索(其一)
  • STM32F407使用ESP8266实现阿里云OTA(下)
  • postgis:添加索引时提示“对访问方法 gist 数据类型 geometry 没有默认的操作符表“
  • 将视频生成视频二维码步骤
  • 深入浅出学会函数(下)
  • 【霍夫变换】图像处理(OpenCV)-part11
  • 【阿里云大模型高级工程师ACP习题集】2.4 自动化评测答疑机器人的表现(⭐️⭐️⭐️ 重点章节!!!)
  • 数据结构-图