猿问

当给定特殊字符时,查询参数中缺少整个字符串 - Java Spring Boot

我目前正在编写一个带有 REST API 服务器的 Java Spring Boot 应用程序。我在这里删除了很多不相关的代码,但我的 POST 路由之一如下所示:


@RequestMapping(value = "/post-request", method = RequestMethod.POST)

public String postRequest(

        @RequestParam(name = REQUEST_STRING) String requestString,

        ){ logger.info(requestString)}

这种方法对于大多数字符串都很有效,但是当在请求参数中包含特殊字符时,我遇到了一个非常奇怪的错误。例如,如果我向应用程序发送包含以下内容的请求:


这个 (&) 是一个 & 符号


在 Postman 中,应用程序将记录


这 (


并剪掉特殊字符之后的所有内容。我相当确定这与 REST API 中特殊字符的编码方式有关,尤其是在请求参数方面,但我在这里做错了什么?有没有办法让我使用 Java Spring Boot 获取完整的字符串,或者我是否被限制这样做?


繁星coding
浏览 97回答 1
1回答

POPMUISE

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
随时随地看视频慕课网APP

相关分类

Java
我要回答