我正在使用npm请求模块在Express.js应用程序中向内部API发出请求。我将以下选项传递给request
函数:
requestOptions = {
url : http://whatever.com/locations/
method : "GET",
json : {},
qs : {
lng : longitude,
lat : latitude + '/predictions'
}
纬度和经度参数将根据用户输入而改变,因此无法进行硬编码。
我希望发出请求的网址的示例是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 :(得分:0)
如果http://whatever.com/locations/[lng],[lat]/predictions是你想要的那么lng& lat不是查询字符串参数,而是URI路径的一部分。您可以完全跳过查询字符串并将requestOptions更改为:
requestOptions = {
url: 'http://whatever.com/locations/' + lng + ',' + lat + '/predictions',
method: 'GET',
json: {}
};