快速身体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-parserconfiguration部分,客户端可以在其请求中使用大写字母。