繁体   English   中英

使用Rest API-查询参数-传递Map <string, list<string> &gt;。 添加了特殊字符</string,>

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM