【发布时间】:2015-11-20 08:02:18
【问题描述】:
我使用io.js 和koa.js 创建了一个API。
作为正文解析器中间件,我使用koa-body,而后者又使用co-body。
在我的一个 API 端点上,我收到了 POST 请求,我需要访问请求的原始正文,因为我需要对其进行编码以验证请求是否有效。
有什么方法可以访问请求的原始正文?我尝试使用raw-body 中间件,但如果我在调用koa-body 之前使用它,则koa-body 中使用的co-body 会中断。如果我在koa-body 之后使用它,它就不起作用了。
app.use(function*(next){
let rawRequestBody = yield rawBody(this.req);
this.rawRequestBody = rawRequestBody;
yield next;
});
编辑:
我认为我找到了解决方法,但我不知道这是否是最佳解决方案。我认为@greim 的答案可能是解决这个问题的更好方法。
我在使用koa-body之前添加了以下代码:
app.use(function *(next) {
let url = this.req.url;
if(this.req.method == 'POST') {
let that = this;
this.req.rawBody = '';
this.req.on('data', function(chunk) {
that.req.rawBody += chunk;
});
}
yield next;
});
【问题讨论】:
标签: javascript node.js koa