springcloud项目,如何获取所有微服务下controller的接口url,还是使用RequestMappingHandlerMapping获取吗?
3条回答 默认 最新
关注
让【道友老李】来帮你解答,本回答参考gpt编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
如果答案让您满意,请采纳、关注,非常感谢!
在SpringCloud项目中,可以通过扫描所有微服务下的Controller类来获取接口的url。可以使用`@RequestMappingHandlerMapping`配合`MethodMappingInfo`来实现这个功能。 具体步骤如下:- 在SpringBoot应用启动类中,注入
RequestMappingHandlerMapping
:
@Autowired private RequestMappingHandlerMapping requestMappingHandlerMapping;
- 创建一个方法来获取所有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; }
- 在需要获取所有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了。
解决 无用评论 打赏 举报- 在SpringBoot应用启动类中,注入