【发布时间】:2019-05-19 14:46:02
【问题描述】:
我有一个休息 API,终点是这样的:
/private/items/query
我将 id 作为查询参数,所以 url 就像:
http://localhost:8081/private/items/query?id=item1234
现在,当项目包含 % 符号时,它无法正确地作为我的 API 中的查询参数,例如如果是item%21,我收到的是item!。
如何解决这个问题?
【问题讨论】:
我有一个休息 API,终点是这样的:
/private/items/query
我将 id 作为查询参数,所以 url 就像:
http://localhost:8081/private/items/query?id=item1234
现在,当项目包含 % 符号时,它无法正确地作为我的 API 中的查询参数,例如如果是item%21,我收到的是item!。
如何解决这个问题?
【问题讨论】:
% 符号通常用于对查询字符串中的特殊字符进行编码,例如+ 在作为查询字符串发送时被编码为 %2B。
如[此处][1]所述:
因为百分号(“%”)字符用作指示符 百分比编码的八位字节,它必须被百分比编码为“%25” 八位字节用作 URI 中的数据。
在您的情况下,您需要发送%2521,它将在后端解码为%21,因为%25 在url 解码时是%。您可以将此 [link][2] 用于 url 编码目的。
[1]:https://www.rfc-editor.org/rfc/rfc3986#section-2.4
[2]:https://www.urlencoder.org/
【讨论】: