请求报文和请求对象
请求报文和请求对象是相关但不完全相同的概念。
-
请求报文是在 HTTP 协议中定义的一种格式化的数据结构,用于客户端向服务器发送请求。它包含了请求行、请求头和请求体等部分,用于描述请求的相关信息和携带数据。
-
请求对象是在服务器端处理请求时,根据请求报文构建的一个对象,表示客户端发送的请求信息。在 Node.js 或其他服务器端框架中,请求对象通常由服务器框架提供,并包含了请求报文的各个部分的解析和封装。
一次 HTTP 传输解析
创建一个后台服务对象
const http = require('http');
const server = http.createServer((request, response) => {
// magic happens here!
});
当一个 HTTP 到达服务端,node 调用 request 处理程序,并产生一些唾手可得的对象用以处理传输,这些对象就是 request 和 response。
request 对象是一个IncomingMessage实例。
response 对象是一个ServerResponse实例
方法、访问地址和请求头
当处理一个请求时,第一件事你需要做的是看一下这个方法和其访问地址,以此决定你到底采取何种合理的行为。
const { method, url } = request;
请求头也不是很难得到,它们也在 request 对象里,称为 headers。
const { headers } = request;
示例:处理GET请求
创建一个后台服务,发送GET请求,解析url中的参数
const http=require('http');
//nodejs中的查询字符串模块
const querystring=require('querystring');
const server = http.createServer((req,res)=>{
const {method,url,headers}=req;
console.log('method',method);
console.log('url',url);
console.log('headers',headers);
//获取url传递的参数
req.query=querystring.parse(url.split('?')[1]);//querystring.parse() 方法将网址查询字符串 (str) 解析为键值对的集合。赋值给新增属性req.query中
console.log('query',req.query);
res.end(
JSON.stringify(req.query)//JavaScript JSON.stringify()方法用于将 JavaScript 值(通常为对象或数组)转换为 JSON 字符串。
)
});
server.listen(5000,()=>{
console.log('server running at port 5000');
})
服务启动后,使用Postman发送一个GET请求:
服务端结果: