快速身体parsing器与自定义标题
我正在设置一个REST API,它使用一个自定义的Content-Type来获取请求,但是我在使用NPM包body-parserparsing正文时遇到了麻烦。 我正在使用Mocha和Chai-HTTP进行一些testing,然后像这样对我的请求进行testing:
chai.request(server) .post('/demo') .set('Content-Type', 'application/vnd+companyName.v01+json') .send({name: 'test'}) .end(function(err, res) {/* tests are here */});
在我的快递app.js中,我打电话给这个中间件:
app.use(bodyParser.json({type: 'application/*+json'}));
当我使types变得更一般化时,比如使它成为'application / *',我可以通过'application / json'Content-Type来传递请求,但不是我自定义的。 当我这样做时,我的要求是一个空的对象。 如果bodyParser只是完全不工作,req.body将是未定义的,而不是一个空的对象。 通过查看文档,我觉得我的身体派对电话的选项是正确的,但显然不是 – 任何见解?
vnd+companyName.v01+json
不是有效的媒体types。
有效的媒体types应如下所示:
[ tree. ] subtype name [ +suffix ] [ ; parameters ]
子types名称不能包含.
或+
字符,分别为(可选) 树和后缀 ( RFC6838 ) 保留 。
所以在你的情况下,MIMEtypes应该是这样的:
application/vnd.companyName-v01+json
但是,似乎还有一个额外的要求强加于body-parser
(或者说, type-is
,用于匹配内容types),因为子types名称需要小写:
application/vnd.companyname-v01+json
奇怪的是,这个要求只适用于body-parser
configuration部分,客户端可以在其请求中使用大写字母。