我有一个处理JSON的函数。它由路由处理程序调用。而不是获取JSON字符串,该功能正在获得这个 -
{"type": "Buffer", "data": [123,122,22,....]}
因此,我无法解析JSON。是什么导致了这个问题?
我正在传递JSON,例如 -
{"id": "123", "username": "abc",...}
我的代码是 -
server.post('/pages', restify.jsonBodyParser(),createPage);
function createPage(req, res, next)
{
myfunction(req,res);
next();
}
function myfunction(req,res){
console.log(req);
}
这是请求标题 -
{"authorization":"Basic xxxxxxx","accept":"application/json, application/xml, text/json, text/x-json, text/javascript, text/xml","user-agent":"RestSharp/105.0.1.0","content-type":"Application/Json", "host":"remoteserver.com:xxx","cookie":"sessionid=36yTgWtzpSR4VrvRikTEzfu8wBcPLWTQARtLgT63","content-length":"4246","accept-encoding":"gzip, deflate"}
答案 0 :(得分:4)
看起来Restify的身体解析器中间件并不像Application/Json
那样内容类型,它只接受application/json
(哪个AFAIK是一个bug,因为mime-types应该被处理不区分大小写;提交问题here)。
如果您无法更改客户端,则可以使用将小写标题的Restify中间件:
server.use(function(req, res, next) {
if (typeof req.headers['content-type'] === 'string') {
req.headers['content-type'] = req.headers['content-type'].toLowerCase();
}
next();
});
在使用restify.jsonBodyParser()
之前,您必须包含该内容。