就像标题一样。我想知道,是否有简单的方法来检查给定的路径是否可以转换为任何控制器中存在的(API)端点。
我有一个具有最高优先级的自定义过滤器,并且如果给定的请求不会产生任何结果(端点不存在),我想返回404状态代码。
看一看RequestMappingHandlerMapping类,特别是它的getHandlerMethods方法。
RequestMappingHandlerMapping
getHandlerMethods
从文档:
public Map<T,HandlerMethod> getHandlerMethods() 返回带有所有映射和HandlerMethod的(只读)映射。
public Map<T,HandlerMethod> getHandlerMethods()
返回带有所有映射和HandlerMethod的(只读)映射。
对于RequestMappingHandlerMapping,T是RequestMappingInfo。
T
RequestMappingInfo
从RequestMappingInfo文档:
封装以下请求映射条件: PatternsRequestCondition RequestMethodsRequestCondition ParamsRequestCondition HeadersRequestCondition ConsumesRequestCondition ProducesRequestCondition RequestCondition(可选,自定义请求条件)
封装以下请求映射条件:
和从HandlerMethod文档:
HandlerMethod
封装有关由方法和Bean组成的处理程序方法的信息。提供对方法参数,方法返回值,方法注释的便捷访问。
如果要通过滤豆进行此操作,则可以RequestMappingHandlerMapping将其自动连线到它:
@Component public class MyFilterBean extends OncePerRequestFilter { @Autowired RequestMappingHandlerMapping mappings; }