如何在运行时通过逻辑判断修改API端点路径?
如何通过if-else逻辑动态修改接口端点路径
如果你不想用配置文件动态注入的方式,可以通过自定义RequestMappingHandlerMapping来实现基于if-else逻辑的端点路径修改,以下是具体实现步骤:
- 自定义
RequestMappingHandlerMapping子类,重写getMappingForMethod方法,在方法内添加if-else逻辑替换路径:
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; import org.springframework.web.servlet.mvc.method.RequestMappingInfo; import java.lang.reflect.Method; public class CustomRequestMappingHandlerMapping extends RequestMappingHandlerMapping { @Override protected RequestMappingInfo getMappingForMethod(Method method, Class<?> handlerType) { RequestMappingInfo originalMapping = super.getMappingForMethod(method, handlerType); if (originalMapping != null) { // 判断原端点是否为目标路径,执行替换逻辑 if (originalMapping.getPatternsCondition().getPatterns().contains("/old-endpoint")) { return originalMapping.mutate() .paths("/new-point") .build(); } return originalMapping; } return null; } }
- 将自定义的HandlerMapping注册到Spring容器:
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; @Configuration public class WebConfig { @Bean public RequestMappingHandlerMapping requestMappingHandlerMapping() { return new CustomRequestMappingHandlerMapping(); } }
这种方式直接在请求映射的核心处理环节修改路径,完全依靠代码内的if-else逻辑判断,无需依赖配置文件、请求参数或路径变量,匹配你的需求。
内容的提问来源于stack exchange,提问作者feyfhe
相关产品推荐
相关产品推荐

