[英]Consuming Rest API- Query Parameter - Passing Map<String, List<String>>. Special Characters gets added
我們是 Rest API 的消費者,我們在其中傳遞查詢參數。 我們正在使用 Map<String, List>。 但是我們稱之為 API,我們的生產者正在為我們的值獲取一些特殊字符。 對於前-
列表查詢參數 = new ArrayList(); queryParameters.add("ABC");
final Map<String, List> finalMap = new HashMap<>();
finalMap.put("列", Collections.singletonList(queryParamters+""));
當我們調用 API 時,我們的生產者得到“GET /server-url/product?column=%5ABC%5D HTTP/1.1”,但我們的期望是向他們發送 ABC 而不是 %5ABC%5D。
我們可以強制不添加特殊字符並且我們的生產者得到我們期望的結果嗎?
URI 沒有任何問題,它只是被編碼了。
您獲得的%5B
和%5D
字符是因為您將 ArrayList object 作為查詢參數傳遞。 如果你的 URI 沒有被編碼,它看起來像這樣:
GET /server-url/product?column=[ABC] HTTP/1.1
如果column
參數只有一個值(如您給出的示例),請使用字符串 object (不是 ArrayList)。 結果將是這樣的:
GET /server-url/product?column=ABC HTTP/1.1
但是,如果您確實需要將值列表指定為 URL 參數(並且能夠在后端將它們作為列表接收),我建議您重復參數,如下所示:
GET /server-url/product?column=ABC&column=BCD HTTP/1.1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.