node获取get参数和post参数
1.get参数
引入包url
,使用url.parse()
对url地址进行解析,返回一个对象,就是get参数.
let {pathname,query} = url.parse(req.url,true);
- pathname 地址
- query 参数
表单部分
<form action="/aaa" method="get">
账号<input type="text" name='username'> <br>
密码<input type="password" name='password'>
<input type="submit" value = "提交">
</form>
js部分
const http = require('http');
const url = require('url');
const fs = require('fs');
let server = http.createServer((req,res)=>{
// console.log(url);
let {pathname,query} = url.parse(req.url,true);
if(pathname === '/'){
fs.readFile('./www/2.html',(err,data)=>{
if(err){
res.writeHeader(404);
res.end(`<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>404</title>
</head>
<body>
<h1>
您要找的页面找不到了</h1>
</body>
</html>`);
}else{
res.end(data);
}
})
}else if(pathname ==='/aaa'){
res.end(`<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>数据</title>
</head>
<body>
<h1>你提交的账号为:${query.username}</h1>
<h1>你提交的密码为:${query.password}</h1>
</body>
</html>`)
}
});
server.listen(3000,()=>{
console.log('服务器启动成功');
});
使用cmd进入目录后打开看看node .\4-url包获取get参数.js
2.post参数
引入包const querystring = require('querystring');
对数据进行解析,返回一个参数对象
post与get略有区别,我们都知道,post请求是在请求体body中传递的,可以传递的数据比get要大很多。在网络中post有可能是分段传递数据的。我们需要把每一次传递过来的数据保存起来,最后再解析。
req.on('data',buffer=>{
arr.push(buffer); //创建一个数组,把每次传递过来的数据保存
});
req.on('end',()=>{
let buf = Buffer.concat(arr); //使用concat把数据连接起来
let post = querystring.parse(buf.toString());//解析数据
}
表单部分
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>post</title>
</head>
<body>
<form action="/aaa" method="post">
账号<input type="text" name='username'> <br>
密码<input type="password" name='password'>
<input type="submit" value = "提交">
</form>
</body>
</html>
js部分
const http = require('http');
const url = require('url');
const fs = require('fs');
const querystring = require('querystring');
let server = http.createServer((req,res)=>{
let {pathname,query} = url.parse(req.url,true);
if(pathname === '/'){
fs.readFile('./www/2.html',(err,data)=>{
if(err){
res.writeHeader(404);
res.end(`<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>404</title>
</head>
<body>
<h1>
您要找的页面找不到了</h1>
</body>
</html>`);
}else{
res.end(data);
}
})
}else if(pathname ==='/aaa' && req.method === 'POST'){
let arr = [];
req.on('data',buffer=>{
arr.push(buffer);
});
req.on('end',()=>{
let buf = Buffer.concat(arr);
let post = querystring.parse(buf.toString());
res.end(`<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>post方法</title>
</head>
<body>
<h1>你提交的账号为:${post.username}</h1>
<h1>你提交的密码为:${post.password}</h1>
</body>
</html>`);
});
}
});
server.listen(3000,()=>{
console.log('服务器启动成功');
})
写在最后
最近懒了好多,学习的时间都减少了。node这部分是前端的基础,必须要掌握的。
对于get/post请求,可能以后用了express
之后获取就很简单了,但是我觉得学习是学习一个学习的过程,原生的方法不重视,那就没有意义。
ps代码中有好多最近刚学的es6语法,let啊 箭头函数啊,不懂的可以百度查一查。