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

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

最佳答案

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

从文档:

public Map<T,HandlerMethod> getHandlerMethods()
返回带有所有映射和HandlerMethod的(只读)映射。

对于RequestMappingHandlerMappingTRequestMappingInfo

RequestMappingInfo docs:

封装以下请求映射条件:


  • PatternsRequestCondition
  • RequestMethodsRequestCondition
  • ParamsRequestCondition
  • HeadersRequestCondition
  • ConsumesRequestCondition
  • ProducesRequestCondition
  • RequestCondition(可选,自定义请求条件)


  • HandlerMethod docs:

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


    如果要通过过滤bean进行此操作,可以将RequestMappingHandlerMapping bean自动连接到它:
    @Component
    public class MyFilterBean extends OncePerRequestFilter {
    
        @Autowired
        RequestMappingHandlerMapping mappings;
    
    }
    

    09-04 08:47