在特定路线上解析jsonbodyparser

时间:2013-06-13 13:48:56

标签: node.js restify

我有一个nodejs 0.10.7应用程序与restify 2.5.0,我的应用程序是一个简单的USER crud文件上传,我希望能够通过writestream上传文件,以便更好地控制接收文件,所以按顺序我希望能够在API收到的数据是JSON时使用jsonbody解析器进行用户crud操作,但是当我收到文件时我不想解析json的身体,因为身体解析器所做的是读取所有内容在记忆中,我得到了“大”和大量的文件。

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

对于我看到的我有两个选项,要么从服务器设置中删除bodyparser并手动解析每个请求,这将带我回答我如何解析CRUD操作的正文。

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

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

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

谢谢大家的帮助!

1 个答案:

答案 0 :(得分:3)

所以这个问题表明我完全不明白路线如何起作用。

我所做的是将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);

通过这个设置,我可以运行bodysarser,无论我需要什么,而不是在所有服务器上运行。