在特定路线上重新调整 jsonbodyparser

mau*_*ado 1 node.js restify

我有一个带有 restify 2.5.0 的 nodejs 0.10.7 应用程序,我的应用程序是一个带有文件上传的简单 USER crud,我希望能够通过 writestream 上传文件以更好地控制接收文件,所以按照想法的顺序,当 API 接收的数据是 JSON 时,我希望能够对用户 crud 操作使用 jsonbody 解析器,但我不想在接收文件时解析 json 正文,因为正文解析器所做的是读取内存中的所有内容和我越来越“大”和大量的文件。

哦,我也从客户端请求中获取二进制数据。

对于我所看到的,我有两个选择,要么从服务器设置中删除 bodyparser,然后手动解析每个请求,这将带我解决如何为 CRUD 操作解析正文的问题。

或者另一种方法是找到一种在某些路由或某些控制器下指定 jsonBodyParser 的方法,但我不知道如何。

那么有没有其他选择或者我有这两个选项,哪个会更好,如果它是第一个选项,那么我如何解析 req.body 以便可以轻松完成 crud 操作?

我的上传功能https://gist.github.com/maumercado/6f1f96d23bce888934db

谢谢大家的帮助!

mau*_*ado 5

所以这个问题表明我很不明白路由在restify中是如何工作的。

我所做的是将 restify.bodyParser() 设置为在路由中的控制器之前运行的方法,因为路由采用一组函数或单个函数作为参数。

所以像这样:

// User Routes

server.get('/users', usersController.index);
server.post('/users', restify.bodyParser(), usersController.create);
server.get('/users', usersController.checkUsername);

// Upload Route

server.post('/upload', fileController.upload);
Run Code Online (Sandbox Code Playgroud)

有了这个设置,我就可以在任何需要的地方运行 bodyparser,而不是在所有服务器上运行。