參考來源: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請求參數。