簡體   English   中英

在Node.js應用中使用正文解析器解析POST數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM