我对node.js服务还很陌生,并且遇到了multipart/form-data内容类型的问题。我需要一种为特定请求禁用主体解析器功能的方法。
我正在使用Restify 2.6.1。
以下是一些配置片段。
我的设置是:
App.js :
server.use(restify.authorizationParser());
server.use(restify.dateParser());
server.use(restify.queryParser());
server.use(restify.jsonp());
server.use(restify.bodyParser());
server.use(restifyValidator);
server.use(restify.gzipResponse());
server.use(passport.initialize());
server.use(restify.conditionalRequest());
Route.js :
app.post({path: '/test/upload/:upload_image_name', version: ver}, uploadCtr.uploadImage);
app.post( {path: '/test/upload/:upload_image_name', version:ver }, passport.authenticate('bearer',{ session: false}),uploadCtr.uploadImage);
没有restify.bodyParser()的上传图像工作(但所有依赖json解析器的失败)
提前致谢。
最佳答案
默认情况下,您不应该对每条路线都使用bodyParser()
。实际上,您只应将bodyParser()
用于需要分段上传的路由。
http://andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html
Restify也存在此问题。
您可以通过将.bodyParser()
替换为以下内容来解决该问题:
server.use( restify.queryParser() );
server.use( restify.jsonBodyParser() );
但是要回答有关特定路由的问题,应将所有路由不需要的任何中间件移至路由特定的中间件中:
server.get('/route', restify.queryParser(), restify.jsonBodyParser(), routeHandler);
这也可以采用一个数组:
var routeMiddleware = [
restify.queryParser(),
restify.jsonBodyParser()
];
server.get('/route', routeMiddleware, routeHandler);
关于node.js - Restify 2.6.1如何针对特定请求禁用主体解析器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21498856/