给定特殊字符时查询参数中缺少整个字符串 - Java Spring 启动
Missing entire string in query parameter when given special character - Java Spring Boot
我目前正在使用 REST API 服务器编写 Java Spring 启动应用程序。我在这里删除了很多不相关的代码,但是我的 POST 路线之一看起来像这样:
@RequestMapping(value = "/post-request", method = RequestMethod.POST)
public String postRequest(
@RequestParam(name = REQUEST_STRING) String requestString,
){ logger.info(requestString)}
这种方法适用于大多数字符串,但在请求参数中包含特殊字符时,我遇到了一个非常奇怪的错误。例如,如果我向应用程序发送包含
的请求
This (&) is an ampersand
在 Postman 中,应用程序将记录
This (
并删除特殊字符后的所有内容。我相当确定这与特殊字符在 REST API 中的编码方式有关,尤其是在涉及请求参数时,但我在这里做错了什么?有没有办法让我使用 Java Spring Boot 获取完整的字符串,或者我是否被限制这样做?
RequestParam 与“&”区分开来,因此如果您直接在字符串中传递“&”,& 之后的任何内容都将被视为另一个 RequestParam
例如:
http://testdata.com?username=test&password=hello&123&type=user
此处密码将作为hello传递,123将被视为另一个RequestParam
要解决这个问题,您需要将“&”编码为“%26”
http://testdata.com?username=test&password=hello%26123&type=user
我目前正在使用 REST API 服务器编写 Java Spring 启动应用程序。我在这里删除了很多不相关的代码,但是我的 POST 路线之一看起来像这样:
@RequestMapping(value = "/post-request", method = RequestMethod.POST)
public String postRequest(
@RequestParam(name = REQUEST_STRING) String requestString,
){ logger.info(requestString)}
这种方法适用于大多数字符串,但在请求参数中包含特殊字符时,我遇到了一个非常奇怪的错误。例如,如果我向应用程序发送包含
的请求This (&) is an ampersand
在 Postman 中,应用程序将记录
This (
并删除特殊字符后的所有内容。我相当确定这与特殊字符在 REST API 中的编码方式有关,尤其是在涉及请求参数时,但我在这里做错了什么?有没有办法让我使用 Java Spring Boot 获取完整的字符串,或者我是否被限制这样做?
RequestParam 与“&”区分开来,因此如果您直接在字符串中传递“&”,& 之后的任何内容都将被视为另一个 RequestParam
例如:
http://testdata.com?username=test&password=hello&123&type=user
此处密码将作为hello传递,123将被视为另一个RequestParam
要解决这个问题,您需要将“&”编码为“%26”
http://testdata.com?username=test&password=hello%26123&type=user