给定特殊字符时查询参数中缺少整个字符串 - 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