簡體   English   中英

Axios 得到一個參數,多個值用逗號隔開

[英]Axios get one parameter with multiple values separated by comma

我在 React 中有一個表,其中包含我從 API 獲得的測試數據。 我必須在前端進行過濾並能夠加入它們,例如從所選類別、所選難度和在某些數據之前創建的過濾測試。

如果我想從類別“Javascript”和難度“初級”中過濾例如測試,我應該得到 uri:

/api/admin/filters?filter=category:Javascript,難度:JUNIOR

如果我想過濾“初級”或“中級”的測試,我應該得到:

/api/admin/filters?filter=difficulty:JUNIOR,difficulty:'MID 注意這里的撇號代表“或”。

我還應該能夠按創建日期進行過濾,例如:

/api/admin/filters?filter=creationDate<2019-09-23 17:34:21,creationDate>2019-09-12 17:34:21

我想知道如何創建這樣的查詢? URLSearchParams 或 axios params添加了由 & 分隔的參數,所以我不能在這里使用它,因為我有一個具有多個值的參數“過濾器”。 或者也許我應該使用它並使用 js 替換方法來替換 & 逗號? 我也不知道如何添加撇號。

我在這里看到了類似的問題: https://spectrum.chat/react/general/query-string-sending-multiple-value-to-the-same-parameter~5d029da0-e7da-443d-a4b2-1529ca7b4f82但我不能在我的情況下使用數組,因為我有多個過濾器。 我想我必須像這樣創建 object :

options = {
     difficulty: [junior, mid],
     category: [javascript],
     created before: 2019-09-23 17:34:21,
     created after: 2019-09-12 17:34:21
} 

現在如何將此類 object 中的鍵和值添加到 uri 中,使其看起來像后端期望的那樣?

任何幫助,將不勝感激。

在傳遞給 axios 之前使用encodeURI編碼參數可能會解決您的問題。

如果您需要傳遞帶有特殊字符的參數(例如 '['、']'...等),您應該將參數作為字符串 '["junior","mid"]' 提供,而不是將參數作為數組提供。 (作為數組給出只會刪除括號)

var params = '["junior","mid"]'
encodeURI(params) // it returns "%5B%22junior%22,%22mid%22%5D"

var params = ["junior","mid"]
encodeURI(params) // it returns "junior,mid"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM