调整Node请求模块中的querystring/URL
Adjusting the querystring/URL in Node's request module
我正在使用 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 知道我可以将分隔符从 &
调整为 ,
,而且 /
我手动附加到 lat
如果我将属性 qsStringifyOptions : {encode: false}
添加到 requestOptions
,则可以正确发送。但是按照我的方式手动添加 /predictions
一开始感觉不对,我仍然遇到剩余格式的困难——即删除 lat=
/lng=
,初始 ?来自查询字符串。
是否可以以某种方式更改查询字符串选项以满足我的需要,或者请求包是否可能不是我想要的?
如果 http://whatever.com/locations/[lng],[lat]/predictions 是您想要的,那么 lng 和 lat 不是查询字符串参数,而是 URI 路径的一部分。您可以完全跳过查询字符串并将您的 requestOptions 更改为:
requestOptions = {
url: 'http://whatever.com/locations/' + lng + ',' + lat + '/predictions',
method: 'GET',
json: {}
};
我正在使用 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 知道我可以将分隔符从 &
调整为 ,
,而且 /
我手动附加到 lat
如果我将属性 qsStringifyOptions : {encode: false}
添加到 requestOptions
,则可以正确发送。但是按照我的方式手动添加 /predictions
一开始感觉不对,我仍然遇到剩余格式的困难——即删除 lat=
/lng=
,初始 ?来自查询字符串。
是否可以以某种方式更改查询字符串选项以满足我的需要,或者请求包是否可能不是我想要的?
如果 http://whatever.com/locations/[lng],[lat]/predictions 是您想要的,那么 lng 和 lat 不是查询字符串参数,而是 URI 路径的一部分。您可以完全跳过查询字符串并将您的 requestOptions 更改为:
requestOptions = {
url: 'http://whatever.com/locations/' + lng + ',' + lat + '/predictions',
method: 'GET',
json: {}
};