【问题标题】:restify jsonbodyparser on specific route在特定路线上重新调整 jsonbodyparser
【发布时间】:2013-06-09 22:31:34
【问题描述】:

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

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

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

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

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

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

感谢大家的帮助!

【问题讨论】:

    标签: node.js restify


    【解决方案1】:

    所以这个问题表明我很不明白路线在 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,而不是在所有服务器上运行。

    【讨论】:

    • 对多部分形式的数据特别有帮助,Restify 的 bodyParser 解析 json 和多部分,这与 multer 等包发生冲突。在这种情况下,路由级别的 multipartBodyParser 非常有用。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多