【问题标题】:Node.js Express REST API - accessing JSON url params with GET requestNode.js Express REST API - 使用 GET 请求访问 JSON url 参数
【发布时间】:2014-09-19 00:33:31
【问题描述】:

我有一个 REST 端点,它是 /geo/search,它需要一些长/纬度坐标作为请求的一部分发送(GEO 多边形)。

  • 有什么方法可以在 GET 请求中使用 JSON 吗?我在想那个 URL 编码可能是一个解决方案:

    var data = encodeURIComponent({"coordinates":[[-122.610168,37.598167],[-122.288818,37.598167],[-122.288818,37.845833],[-122.610168,37.845833],[-122.610168,37.598167]]});
    
  • 如何访问路由中的这些参数?

【问题讨论】:

  • 第一个问题,请查看JQuery.param
  • 第二个问题,如果你使用JQuery.param,那么你可以在Express的路线中使用req.query.coordinates[x][y]访问坐标。
  • 为什么不使用查询字符串?这就是它的用途。您可以将 PHP/Rails/jQuery 样式的查询字符串参数与数组一起使用,如前所述,或者您可以将所有内容编码为 JSON,为查询字符串正确编码,然后分配给像 data 之类的变量。有很多方法可以解决这个问题,但在这种情况下我要做的最后一件事是将它附加到路径的一部分。
  • 否 - 请参阅我的第二条评论。你应该使用req.query 而不是req.params
  • 感谢@mccannf,但 req.query.coordinates 返回未定义。

标签: json node.js rest express get


【解决方案1】:

回答 #1 - 感谢@mccannf

使用 JQuery.param:

客户:

var test = {"coordinates":[[-122.610168,37.598167],[-122.288818,37.598167],[-122.288818,37.845833],[-122.610168,37.845833],[-122.610168,37.598167]]};

    console.log($.param( test ));

输出:

coordinates%5B0%5D%5B%5D=-122.610168&coordinates%5B0%5D%5B%5D=37.598167&coordinates%5B1%5D%5B%5D=-122.288818&coordinates%5B1%5D%5B%5D=37.598167&coordinates%5B2%5D%5B%5D=-122.288818&coordinates%5B2%5D%5B%5D=37.845833&coordinates%5B3%5D%5B%5D=-122.610168&coordinates%5B3%5D%5B%5D=37.845833&coordinates%5B4%5D%5B%5D=-122.610168&coordinates%5B4%5D%5B%5D=37.598167 

回答 #2 - 感谢@Brad:

服务器 - 快速路由:

router.get('/search_polygon', function(req, res) {
    console.log('Server received: ' + JSON.stringify(req.query.coordinates));
...

输出:

Server received: [["-122.610168","37.598167"],["-122.288818","37.598167"],["-122.288818","37.845833"],["-122.610168","37.845833"],["-122.610168","37.598167"]]

我的问题是尝试将这些作为路径的一部分传递,而不是作为应有的参数传递。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    • 2019-04-10
    • 2014-09-01
    • 1970-01-01
    • 2015-07-02
    • 2012-03-23
    相关资源
    最近更新 更多