2017-02-08 70 views
0

這是常見的通過具有多個值的參數作爲一個GET查詢字符串傳遞對象與多個值作爲一個GET查詢字符串參數:採用愛可信

http://server/status?stat=a&stat=b 

一個人如何創造這種類型的查詢字符串在JS中使用axios庫?創建一個對象,其中的參數名稱是鍵和值是多個值的陣列創建一個查詢字符串:

​​

這是從什麼服務器預期的格式不正確。這可以在axios中完成嗎?

回答

1

常見的是通過具有多個值的參數作爲在查詢字符串GET

這決不是一個標準。不同的語言,框架實施不同的解決方案。在Authoritative position of duplicate HTTP GET query keys上看到這個問題。

這可以在axios中完成嗎?

Axios documentation

在Node.js的,你可以使用查詢字符串模塊如下:

var querystring = require('querystring'); 
axios.post('http://something.com/', querystring.stringify({ foo: 'bar'}); 

您還可以使用QS庫。

qs library支持數組。

另一種方法是使用Connect

更新

的QS庫支持陣列,但僅當該參數被後綴[]

var paramsString = "q=URLUtils.searchParams&topic[]=api&topic[]=bar" 

或者,URLSearchParams API提供getAll()方法:

var paramsString = "q=URLUtils.searchParams&topic=api" 
var searchParams = new URLSearchParams(paramsString); 

searchParams.getAll("topic"); // ["api"] 

這在IE中不起作用,但可以使用polyfill url-search-params

+0

URLSearchParams API也可以根據Axios文檔使用。謝謝@sgtdck – flashmatrix

+0

我試過qs庫,但它目前不支持1對多鍵/值對(key = stat,value = 1,2,3 ...)。 URLSearchParams接口仍然是一個有效的解決方案。該API在IE中不受支持,但可以使用polyfill [url-search-params](https://github.com/WebReflection/url-search-params)。 – flashmatrix

+0

@flashmatrix我更新了答案,但重新閱讀您的評論我沒有意識到你需要1:許多鍵/值對。你的意思是'?key = stat&value = 1,2,3'這會導致'stat = [1,2,3]'? – sgtdck