[英]Parsing POST data with body-parser in Node.js app
我正在嘗試構建一個簡單的Node.js應用程序,它將解析來自AngularJS應用程序作為POST請求傳遞給它的數據。 以下是AngularJS應用程序和Node.js應用程序中使用的代碼。 我面臨的問題是,我搜索了Web,試圖找到如何解析POST請求中傳遞的信息(數據和標頭),但找不到任何示例,因此對傳入的解析示例(數據和標頭)的任何幫助POST請求將對我有很大幫助。 謝謝。
注意:我使用的是Express 4.1.2,Body-parser 1.8.0。
節點應用:
var express = require('express');
var http = require('http');
var bodyParser = require('body-parser');
var app = express();
app.set('port', process.env.PORT || 3000);
app.use(bodyParser.json());
app.post('/', function (req, res) {
console.log(req.body);
res.send(200);
});
http.createServer(app).listen(app.get('port'), function(){
console.log('Server listening on port ' + app.get('port'));
});
POST請求代碼
var deferred = $q.defer();
var dataObj = {};
dataObj.name = 'Chan';
dataObj.email_address = 'email@domain.com';
var myToken = '1234567890';
$http({ method:'POST',
url: '/',
data: dataObj,
headers: { 'Token' : myToken
}
}).success(function(data,status,headers,config){
deferred.resolve(data);
}).error(function(data,status,headers,config){
deferred.reject(status);
});
return deferred.promise;
如果要將data
設置為純js對象,則angular會將其解釋為帶有該對象中各種鍵和值的urlencoded形式。
因此,這里有兩個可能的修復。 一種是添加類似app.use(bodyParser.urlencoded({ extended: false }));
在app.use(bodyParser.json());
第二個可能的解決方法是將$ http調用更改為發布JSON而不是經過urlencoded的數據。 為此,將data: dataObj,
更改為data: JSON.stringify(dataObj),
然后將'Content-Type': 'application/json'
到headers
中,如下所示:
headers: {
'Token' : myToken,
'Content-Type': 'application/json'
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.