2016-11-24 89 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