【问题标题】:Is there any difference between using request.body or request.params in node.js?在 node.js 中使用 request.body 或 request.params 有什么区别吗?
【发布时间】:2013-08-12 12:49:00
【问题描述】:

我想知道在从客户端向服务器发送数据时,在 node.js 中使用 request.body 或 request.params 是否有任何偏好?

【问题讨论】:

    标签: node.js http request


    【解决方案1】:

    您可以在正文中放置比在 url 中更多(多样化)的数据。您可以在正文中传递任何字符串(特殊字符),而在 url 中对其进行编码会使您容易受到状态 414(请求 URI 太长)的影响。而且在传递数组和复杂对象时使用 body 会容易得多:)

    【讨论】:

      【解决方案2】:

      我会说最佳实践是在获取时应使用参数,但在发布、放置和修补时使用正文。

      获取样本

      app.get "/api/items/:id", (req, res) ->
        itemController.getItem req.params.id, (item, error) =>      
           if !error
             res.send 'item': item
           else
             res.send 'error: error 
      

      示例帖子

      app.post "/api/items", (req, res) ->
        itemController.saveItem req.body, (item, error) =>      
           if !error
             res.send 'item': item
           else
             res.send 'error: error 
      

      您也可以添加验证,但这是我编写所有端点的方式。

      【讨论】:

      • 我认为删除请求通常不包含正文。至少,Google App Engine 强制执行此操作。
      【解决方案3】:

      问这个问题已经 4 年多了,但是,我仍然会插话以确保其他偶然发现这篇文章的人有更多信息来更好地理解这个概念。

      req.body 和 req.params 服务器有两种不同的用途。

      当您需要将数据发送到服务器(以存储它或其他东西)时,您将使用 req.body,例如在对服务器的“POST”请求中。例如,查看以下内容:

      您正在向 mongodb 发出“POST”请求以保存博客文章。在这种情况下,您可能希望获取请求正文中的数据并将其发送到数据库。在这里你会使用 req.body

      app.post("/blog", function(req, res){
        var data = req.body.blog;
        .... // code to send data to the db
        ....
      });
      

      req.params 用于从 url 中提取“参数”。假设您要提取作为 url 一部分的“id”。例如,“id”是以下网址中问题后的数字 stackoverflow.com/questions/18187424/

      app.get("/xyz/questions/:id", function(req, res){
        var useId = req.params.id;
        ...
        ...
      });
      

      希望,它会有所帮助。

      谢谢, 卡提克

      【讨论】:

        猜你喜欢
        • 2021-11-16
        • 1970-01-01
        • 2013-05-31
        • 2018-02-23
        • 2013-04-12
        • 2012-09-12
        • 2013-12-02
        • 1970-01-01
        • 2017-04-10
        相关资源
        最近更新 更多