参考来源:https://www.runoob.com/nodejs/node-js-get-post.html
在很多场景中,我们的服务器都需要跟用户的浏览器打交道,如表单提交。
表单提交到服务器一般都使用 GET/POST 请求。
接下来,我们就进行get方式的请求,这个我们不需要过多的讲解,相信大家都会用get,我们直接上代码:
在任意盘里创建一个文件夹,我的是在E盘下:
获取GET请求参数:
在该文件夹下,创建一个index.js,代码如下:
var http = require('http');
var url=require('url'); //引入url 模块,帮助解析
var querystring=require('querystring');// 引入 querystring 库,也是帮助解析用的
function service(req,response){
//获取返回的url对象的query属性值
var arg = url.parse(req.url).query;
//将arg参数字符串反序列化为一个对象
var params = querystring.parse(arg);
//请求的方式
console.log("method - " + req.method);
//请求的url
console.log("url - " + req.url);
//获取参数id
console.log("id- " + params.id);
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end('Hello Node.js');
}
var server = http.createServer(service);
server.listen(8080);
打开控制台,进入到指定的文件夹下,输入命令:node index.js
浏览器无参数访问: localhost:8080 (8080是刚才监听的端口)
在上述控制台里,会出现 /favicon.ico 信息,这个 favion 是 favorite icon 的缩写,即网站图标
用node.js 就会有这么一个默认的访问,忽略掉好了。。。
浏览器有参数访问:http://localhost:8080/?id=123
获取POST请求参数:
POST 请求的内容全部的都在请求体中,http.ServerRequest 并没有一个属性内容为请求体,原因是等待请求体传输可能是一件耗时的工作。
比如上传文件,而很多时候我们可能并不需要理会请求体的内容,恶意的POST请求会大大消耗服务器的资源,所以 node.js 默认是不会解析请求体的,当你需要的时候,需要手动来做。
创建一个post.js文件:
var http = require('http');
var querystring = require('querystring');
var postHTML =
'<html><head><meta charset="utf-8"><title>菜鸟教程 Node.js 实例</title></head>' +
'<body>' +
'<form method="post">' +
'网站名: <input name="name"><br>' +
'网站 URL: <input name="url"><br>' +
'<input type="submit">' +
'</form>' +
'</body></html>';
http.createServer(function (req, res) {
var body = "";
req.on('data', function (chunk) {
body += chunk;
});
req.on('end', function () {
// 解析参数
body = querystring.parse(body);
// 设置响应头部信息及编码
res.writeHead(200, {'Content-Type': 'text/html; charset=utf8'});
if(body.name && body.url) { // 输出提交的数据
res.write("网站名:" + body.name);
res.write("<br>");
res.write("网站 URL:" + body.url);
} else { // 输出表单
res.write(postHTML);
}
res.end();
});
}).listen(8080);
打开控制台:输入命令:node post.js
打开浏览器,访问:localhost:8080
结果:
以上就是通过node.js获取Get和Post请求参数。