获取请求相关信息
创建服务可以看上一篇文章链接: node-js http服务
- 获取请求行和请求头
- method 请求方法
- url 请求url
- headers 请求头
const http = require('http')
// 创建服务对象
const server = http.createServer((request,response)=>{
response.setHeader('Content-type','text/html;charset=utf-8')
// 获取请求方法
console.log(request.method)
// 获取请求的url 只包括url路径及字符串
console.log(request.url)
//获取http的请求头
console.log(request.headers)
response.end('Hello Http Server')
})
server.listen(9000,()=>{
console.log('服务已启动')
})
- 获取请求体
const http = require('http')
// 创建服务对象
const server = http.createServer((request,response)=>{
// 定义变量
let body =''
// 绑定data事件 chunk是buffer格式,当+=的时候会自动转换字符串
request.on('data',chunk=>{
body += chunk
})
// 绑定end 事件
request.on('end',()=>{
console.log(body)
// 请求结束响应
response.end('Hello Http Server')
})
})
server.listen(9000,()=>{
console.log('服务已启动')
})
想要看到请求体,那我们直接访问IP地址的方式就不行了,可以新建html文件发送post请求来看效果。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="http://127.0.0.1:9000" method="post">
账号:<input name="name"/><br/>
密码:<input name="password"/><br/>
<input type="submit" value="发送">
</form>
</body>
</html>
通过这种方式访问,在终端中就可以看到输出的请求体了。
3. 获取请求路径和查询字符串(旧),使用url模块。
// 引入http模块
const http = require('http')
// 引入url模块
const url = require('url')
// 创建服务
const server = http.createServer((request,response)=>{
// 第二个参数传 true,是为了将url中query字段转换位对象(Object),方便获取参数
let res = url.parse(request.url,true)
// 获取url路径
let pathname = res.pathname
console.log(pathname)
// 获取路径参数
let query = res.query
console.log(query.name)
response.end('url params')
})
server.listen(9000,()=>{
console.log('服务启动成功')
})
- 获取请求路径和查询字符串(新)。
- new URL()
// 引入http模块
const http = require('http')
// 创建服务
const serve = http.createServer((request,response)=>{
// 必须传入完整的url路径
let url = new URL(request.url,'http://127.0.0.1')
// url路径
console.log(url.pathname)
// url中有searchParams可以取参数 假如取name 借助get方法
let name = url.searchParams.get('name')
console.log(name)
response.end('url News')
})
// 启动
server.listen(9000,()=>{
console.log('服务已启动')
})
注: 以上两种都可以使用,暂时不用纠结
附上文档地址可以自行了解一下:链接:node-url文档