这可能是一个奇怪的请求,但我正在使用Sping Boot API,并且有一个要求,如果有人多次发送相同的查询参数,它会抛出400错误。但是,因为Spring Boot会自动将参数作为分隔列表拉入,所以我不知道如何做到这一点。
例如,如果有人发送了/my-api?foo=some%20stuff&foo=some%20more%20stuff
,那么foo的结果值是“some stuff,some more stuff”。
我找不到任何关于如何验证它的文档。我想我可以在请求到达控制器之前检查它并在那里做一些工作。但我希望有一些我可以使用的配置或注解。
3条答案
按热度按时间1mrurvl11#
没有纯粹的声明方式,但有一种简单的代码方式:
然后控制器方法的第一行:
o2g1uqev2#
典型的解决方案是使用ServletFilter。
servlet过滤器是在每个请求之前和之后执行的一段代码,可以在其上执行额外的任务。
ServletFilters的典型用途是:
ServletFilters最酷的一点是,您可以在一个地方编写代码,然后决定它应用于哪些URL。
此外,一个URL可以由多个过滤器提供服务。在这种情况下,它们以嵌套的方式处理。
v8wbuo2f3#
您可能需要处理原始查询字符串。您可以通过接受HttpServletRequest参数来获取原始查询: