get 请求
-
request.method
获取请求动词 -
request.url
获取请求路径(含查询参数) -
request.header
获取请求头 - get 请求一般没有消息体/请求体
post 请求
- curl -v -d "name=frank" http://localhost:8888
-
request.on('data', fn)
获取消息体 -
request.on('end', fn)
拼接消息体
import * as http from "http";
import {IncomingMessage} from "http";
const server = http.createServer();
server.on('request', (request: IncomingMessage, response)=> {
console.log(request.httpVersion)
console.log(request.url)
console.log(request.headers);
const array = [];
request.on('data', (chunk)=> {
array.push(chunk)
})
request.on('end', ()=> {
const body = Buffer.concat(array).toString(); // 拼接数据
console.log('body', body)
response.end('hi')
})
})
server.listen(8888)
image.png
(request, response) 是啥
找类
根据文档,request
是http.IncomingMessage
的实例
根据文档,response
是http.ServerResponse
的实例
Request
- 拥有headers、method、url等属性
- 从stream.Readable类继承了data/end/error事件
- 为什么不能直接拿到请求的消息体呢?跟 TCP 有关
Response - 拥有 getHeader/setHeader/end/write等方法
- 拥有statusCode 属性,可读可写
- 继承了Stream,目前用不上
网友评论