2016-11-24 29 views
0

我正在使用npm请求模块在Express.js应用程序中向内部API发出请求。我传递下列选项到request功能:根据用户输入调整Node的请求模块中的查询字符串/ URL

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,我可以调整分离器从&,,并且还使得/我手动附加到lat可以适当地发送,如果我qsStringifyOptions : {encode: false}添加属性requestOptions。但以手动方式追加/predictions我以前的做法感觉不对,而且我仍然有其余格式的困难 - 即删除lat=/lng=,最初的?来自查询字符串。

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

回答

0

如果http://whatever.com/locations/[lng],[lat]/predictions是你想要的,那么lng & lat不是查询字符串参数,而是URI路径的一部分。您可以跳过整个查询字符串,并改变你的requestOptions到:

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

对不起,这不是在我的岗位明确的 - 现在我会编辑。这是一个控制器的组件,lat和lng是请求将会改变,所以我不能硬编码的URL。 – Hugo

+0

网址不必硬编码,但重点是值应该在url中。编辑帖子以改用lng和lat变量。 – Hyddan

+0

谢谢!我是新来的,所以我不能赞成,但这对我来说。不知道为什么我没有开始。 – Hugo

相关问题