你个老️️⑥ 2025-01-11 17:36 采纳率: 14.3%
浏览 18

如何获取所有微服务下controller的接口url

springcloud项目,如何获取所有微服务下controller的接口url,还是使用RequestMappingHandlerMapping获取吗?

  • 写回答

3条回答 默认 最新

  • 道友老李 JWE233286一种基于机器视觉的水表指针读数识别及修正的方法 专利发明者 2025-01-11 17:37
    关注
    让【道友老李】来帮你解答,本回答参考gpt编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
    如果答案让您满意,请采纳、关注,非常感谢!
    在SpringCloud项目中,可以通过扫描所有微服务下的Controller类来获取接口的url。可以使用`@RequestMappingHandlerMapping`配合`MethodMappingInfo`来实现这个功能。 具体步骤如下:
    1. 在SpringBoot应用启动类中,注入RequestMappingHandlerMapping
    @Autowired
    private RequestMappingHandlerMapping requestMappingHandlerMapping;
    
    1. 创建一个方法来获取所有Controller的URL:
    public List<String> getAllControllerUrls() {
        List<String> urls = new ArrayList<>();
        Map<RequestMappingInfo, HandlerMethod> handlerMethods = requestMappingHandlerMapping.getHandlerMethods();
        for (RequestMappingInfo requestMappingInfo : handlerMethods.keySet()) {
            Set<String> patterns = requestMappingInfo.getPatternsCondition().getPatterns();
            urls.addAll(patterns);
        }
        return urls;
    }
    
    1. 在需要获取所有Controller的URL的地方调用这个方法即可获取所有接口的URL。 例如,可以在一个RestController中进行调用:
    @RestController
    public class ApiController {
        @Autowired
        private RequestMappingHandlerMapping requestMappingHandlerMapping;
        @GetMapping("/urls")
        public List<String> getAllUrls() {
            List<String> urls = new ArrayList<>();
            Map<RequestMappingInfo, HandlerMethod> handlerMethods = requestMappingHandlerMapping.getHandlerMethods();
            for (RequestMappingInfo requestMappingInfo : handlerMethods.keySet()) {
                Set<String> patterns = requestMappingInfo.getPatternsCondition().getPatterns();
                urls.addAll(patterns);
            }
            return urls;
        }
    }
    

    通过以上方法,就可以获取到所有微服务下Controller的接口URL了。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月11日