1

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

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

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

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

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

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

谢谢大家的帮助!

4

1 回答 1

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);

通过该设置,我可以在任何需要的地方运行 bodyparser,而不是在所有服务器上运行。

于 2013-06-13T19:01:53.313 回答