Spring boot 如何处理请求url SpringBoot中的无效/额外特殊字符&=?

Spring boot 如何处理请求url SpringBoot中的无效/额外特殊字符&=?,spring-boot,rest,postman,Spring Boot,Rest,Postman,我有一个Rest服务,其中get call如果我发送了多个无效的/extra&和=字符,那么我的端点也不会抛出任何错误。若url包含任何额外的特殊字符,如&或=,我想抛出无效的请求错误。 例如: http://localhost:8080/myservice?rollNo=03456789321&school=Myschool //This is Okay for me http://localhost:8080/myservice?rollNo=0345678932

我有一个Rest服务,其中get call如果我发送了多个无效的/extra&和=字符,那么我的端点也不会抛出任何错误。若url包含任何额外的特殊字符,如&或=,我想抛出无效的请求错误。 例如:

    http://localhost:8080/myservice?rollNo=03456789321&school=Myschool   //This is Okay for me
    http://localhost:8080/myservice?rollNo=03456789321&school=    //should throw error as school is not having value
    http://localhost:8080/myservice?rollNo=03456789321&&&&school=Myschool 
  //should throw error as &&&& is multiple where it should only one
    http://localhost:8080/myservice?rollNo=03456789321&=   //should throw error as &= is there at end having no sence.
请注意,我正在点击来自postman的这些请求,我怀疑postman是否会对这些参数做些什么,因为调试时我无法在spring boot中找到这些额外的字符

我可以通过什么方式在我的控制器中获取整个请求url,这样我就可以找到这些提交的角色? 有没有内置的springboot注释来处理这种情况? 您可以在Spring引导rest控制器中使用@RequestParam

以下几点

@GetMapping(value = "/myservice")
public boolean doSomething(@RequestParam("rollNo") Integer rollNo , @RequestParam("school") String school) {
    doValidation(rollNo,school);

    // Do Something

    return true;

  }
@RequestParam将确保您的Url需要有这些参数rollNo&school。没有它,它将抛出错误

但如果要传递一个空字符串,如第二个示例中的&school=。控制器将获得一个空字符串

您可以在控制器中执行任何操作之前添加一个基本验证层来处理这种情况。

我的问题已经解决了。 经过大量研究和观察,我了解到,当您在请求url中传递&and=中任意数量的字符时,rest客户端工具(如postman或advanced rest client)将在访问实际服务器之前优化url,并删除那些多余的不必要字符。因此,如果在URL中写多& & &或=CHRCTETES,它将考虑每个额外的和空白的参数,并且在发送最终请求时将忽略,只有那些具有参数名的字符将被作为细化请求的一部分。 您可以在下面的屏幕截图中看到: