一尘不染

Spring:检查给定端点是否存在

spring-boot

就像标题一样。我想知道,是否有简单的方法来检查给定的路径是否可以转换为任何控制器中存在的(API)端点。

我有一个具有最高优先级的自定义过滤器,并且如果给定的请求不会产生任何结果(端点不存在),我想返回404状态代码。


阅读 262

收藏
2020-05-30

共1个答案

一尘不染

看一看RequestMappingHandlerMapping类,特别是它的getHandlerMethods方法。

从文档:

public Map<T,HandlerMethod> getHandlerMethods()

返回带有所有映射和HandlerMethod的(只读)映射。

对于RequestMappingHandlerMappingTRequestMappingInfo

RequestMappingInfo文档

封装以下请求映射条件:

  1. PatternsRequestCondition
  2. RequestMethodsRequestCondition
  3. ParamsRequestCondition
  4. HeadersRequestCondition
  5. ConsumesRequestCondition
  6. ProducesRequestCondition
  7. RequestCondition(可选,自定义请求条件)

和从HandlerMethod文档

封装有关由方法和Bean组成的处理程序方法的信息。提供对方法参数,方法返回值,方法注释的便捷访问。


如果要通过滤豆进行此操作,则可以RequestMappingHandlerMapping将其自动连线到它:

@Component
public class MyFilterBean extends OncePerRequestFilter {

    @Autowired
    RequestMappingHandlerMapping mappings;

}
2020-05-30