【问题标题】:Adjusting the querystring/URL in Node's request module调整 Node 请求模块中的查询字符串/URL
【发布时间】:2016-11-24 15:20:27
【问题描述】:

我正在使用 npm 请求模块在 Express.js 应用程序中向内部 API 发出请求。我将以下选项传递给request 函数:

requestOptions = {
 url : http://whatever.com/locations/
 method : "GET",
 json : {},
 qs : {
  lng : longitude,
  lat : latitude + '/predictions'
 }

纬度和经度参数会根据用户输入而改变,因此不能硬编码。

我希望向其发出请求的 URL 示例是 http://whatever.com/locations/37.891726,-122.277858/predictions

不幸的是,request(requestOptions, callback) 的结果是向http://whatever.com/locations/?lng=37.891726&lat=-122.277858%2Fpredictions 发出请求。

我从documentation 知道,我可以将分隔符从& 调整为,,并且如果我添加属性@987654331,我手动附加到lat/ 可以正确发送@到requestOptions。但是手动添加/predictions,我一开始就感觉不对,而且我仍然有剩余格式的困难——即删除lat=/lng=,首字母?从查询字符串。

是否可以以某种方式更改查询字符串选项以满足我的需要,或者请求包是否可能不是我想要的?

【问题讨论】:

    标签: javascript node.js express npm http-get


    【解决方案1】:

    如果http://whatever.com/locations/[lng],[lat]/predictions 是您想要的,那么 lng 和 lat 不是查询字符串参数,而是 URI 路径的一部分。您可以完全跳过查询字符串并将您的 requestOptions 更改为:

    requestOptions = {
        url: 'http://whatever.com/locations/' + lng + ',' + lat + '/predictions',
        method: 'GET',
        json: {}
    };
    

    【讨论】:

    • 抱歉,我的帖子中并不清楚——我现在将对其进行编辑。这是控制器的一个组件,其中 lat 和 lng 是会更改的请求,因此我无法对 URL 进行硬编码。
    • url 不必硬编码,但关键是值应该在 url 中。编辑帖子以改用 lng 和 lat 变量。
    • 谢谢!!我是新来的,所以我不能投票,但这对我有用。不知道为什么我一开始就没有想到。
    猜你喜欢
    • 1970-01-01
    • 2012-01-28
    • 2013-05-16
    • 2013-04-06
    • 2019-07-22
    • 2013-07-21
    • 2012-03-06
    • 2014-02-10
    • 1970-01-01
    相关资源
    最近更新 更多