url模块方式
使用url.parse 方法将路径解析为一个方便操作的随心,第二个参数true表示直接将查询字符串转成对象
let urlObj = url.parse(req.url,true)
console.log("urlObj:",urlObj)
示例
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>参数测试</title>
</head>
<body>
<form action="http://127.0.0.1:3000/login" method="post">
<input type="text" name="name">
<input type="text" name="age">
<input type="submit" >
</form>
</body>
</html>
app.js
// 参数处理
const http = require("http")
const url = require("url") // 用于处理url地址
const queryString = require("querystring") //处理请求参数模块
const fs = require("fs")
const app = http.createServer()
app.on("request",(req, res)=>{
// 使用url.parse 方法将路径解析为一个方便操作的对象,第二个参数true表示直接将查询字符串转成对象
// query:请求参数, pathname:请求路径
let {query, pathname} = url.parse(req.url,true)
res.writeHead(200,{'Content-type':'text/html;charset=utf8'})
// 首页处理
if(pathname == "/" || pathname == "/index"){
fs.readFile("./index.html",(err, data)=>{
if(!err){
res.end(data)
}
})
return
}
console.log("method:",req.method,pathname)
if(req.method == "GET"){
// 参数被放置在请求路径中进行传输
// query get请求参数 query.xxx
if(pathname == "/index"){
// index 路径处理
// ....
}
}else if(req.method == "POST"){
// 参数被放置在请求体中进行传输
// post请求参数是通过事件接收的
// data 当有请求参数传递的时候触发
// end 请求参数传递完成的时候触发
let postparams = ''
req.on("data",(data)=>{ // 如果参数内容过大 可能会触发多次 数据分多次上传
// console.log("POSTdata:",data.toString()) //post请求参数
// if(pathname == '/login'){
// // login 路径处理
// // ....
// }
console.log('data',data)
postparams += data;
})
req.on("end",()=>{
let paiams = queryString.parse(postparams)
console.log('end',postparams,paiams.name)
})
}
res.end("响应")
})
app.listen(3000,()=>{
console.log(" 服务器启动成功: http://127.0.0.1:3000")
})
启动测试
node app.js