2016-11-11 53 views
0

我已经建立了一个节点服务器,将请求传递给一个实用程序类。 到目前为止,POST请求被命中,但是对body属性值的映射是未定义的。 Bodyparser也用于post方法来协助Json解析。如何从express服务器的请求主体中解析JSON属性?

我踏进请求和看到,主体填充并认为这是显示在下面的膏中的属性名称是正确的:

body: { '{\n\t"Email":"[email protected]",\n\t"Dashboard_Name":"my dash 4",\n\t''},

但下面映射到的值通过req.body.propertyname assinged返回undefined:

var p_email = req.body.Email; 
var p_dashboardName = req.body.Dashboard_Name; 

问:

如何从快速服务器的请求主体中解析JSON属性?

JSON对象发布:

这是我用邮差发布到服务器的JSON:

{ 
    "Email":"[email protected]", 
    "Dashboard_Name":"my dash 4" 

} 

要旨Express服务器和相关的实用方法SaveUserProfile:

Express服务器 -

var express  = require('express'); 
var UserLDAP = require('./utilities/UserLDAP'); //utility file containing the POST method 
var bodyParser = require('body-parser'); 


const url  = require('url'); 
const app  = express(); 
var sql   = require('mssql'); 
const cors  = require('cors'); 
const path  = require('path'); 


sql.connect("********************************************************************") 
.then((connection1) => { 

    sql.globalConnection = connection1; 

    app.use(cors()); 

    app.use(bodyParser.json()); 
    app.use(bodyParser.urlencoded({ extended: true })); 


    app.post('/OOO/SaveUserProfile', UserLDAP.SaveUserProfile) 


    app.listen(process.env.PORT || 4000); 
    logger.info(`listening to port ${process.env.PORT}`); 
}).catch((err) => { 
    res.status(500).send(err.message); 
    logger.error(err.message); 
}); 

UserLDAP.js -

var sql = require('mssql'); 
var bodyParser = require('body-parser'); 




//Save User Profile 

     exports.SaveUserProfile = function(req, res) { 


     req.app.use(bodyParser.json()); 
     req.app.use(bodyParser.urlencoded({ extended: true })); 

     var request = new sql.Request(sql.globalConnection); 

     console.log(req); 

     var p_email = req.body.Email; 
     var p_dashboardName = req.body.Dashboard_Name; 


    }; 
+1

您使用哪种版本的express? – Kalman

+0

4.1表示我们上次更新。 –

回答

1

原来我有不正确的内容类型集邮递员对象被张贴。需要设置为:

application/json; charset=UTF-8 
-1

目前,你有没有喜欢,如果身体parser.json解析器已经产生,这似乎明显的地方开始考虑到内容的错误办法知道是有,但结果ISN “T。

我看了一下身体解析器,发现了一个issue那说话的检测,我认为那些是很好的了解一个JSON错误的问题。

显影剂建议以下作为一个方法。

app.use(errorFork(bodyParser.json(), 
function (err, req, res, next) { 
    // do stuff with only body parser errors 
})) 

// this is an example; you can use any pattern you like. 
function errorFork(middleware, errorHandler) { 
    middleware(req, res, function (err) { 
     if (err) { 
      return errorHandler(err, req, res, next) 
     }else{ 
      return next() 
     } 
    }) 
} 

这不是修复,但它会给你更多的信息。通过你所指出的questin是什么解析出了什么问题?我注意到你粘贴的内容的另一件事是它不是有效的json(忽略\ n \ t),你有几个胭脂'在那里,值得检查。尝试复制正文(raw)中的内容,并将其通过像jsonlint.com这样的json验证程序网站,就像双重检查一样,看看body-parser是否返回任何错误。