软件编程
位置:首页>> 软件编程>> java编程>> 使用SpringBoot获取所有接口的路由

使用SpringBoot获取所有接口的路由

作者:情陌人灬已不在  发布时间:2021-08-29 22:28:34 

标签:SpringBoot,接口,路由

SpringBoot获取所有接口的路由


@Autowired
   WebApplicationContext applicationContext;

@RequestMapping(value = "v1/getAllUrl", method = RequestMethod.POST)
   public Object getAllUrl() {
       RequestMappingHandlerMapping mapping = applicationContext.getBean(RequestMappingHandlerMapping.class);
       // 获取url与类和方法的对应信息
       Map<RequestMappingInfo, HandlerMethod> map = mapping.getHandlerMethods();

//      List<String> urlList = new ArrayList<>();
//      for (RequestMappingInfo info : map.keySet()) {
//          // 获取url的Set集合,一个方法可能对应多个url
//          Set<String> patterns = info.getPatternsCondition().getPatterns();
//
//          for (String url : patterns) {
//              urlList.add(url);
//          }
//      }

List<Map<String, String>> list = new ArrayList<Map<String, String>>();
       for (Entry<RequestMappingInfo, HandlerMethod> m : map.entrySet()) {
           Map<String, String> map1 = new HashMap<String, String>();
           RequestMappingInfo info = m.getKey();  
           HandlerMethod method = m.getValue();  
           PatternsRequestCondition p = info.getPatternsCondition();  
           for (String url : p.getPatterns()) {  
               map1.put("url", url);
           }  
           map1.put("className", method.getMethod().getDeclaringClass().getName()); // 类名  
           map1.put("method", method.getMethod().getName()); // 方法名
           RequestMethodsRequestCondition methodsCondition = info.getMethodsCondition();
           for (RequestMethod requestMethod : methodsCondition.getMethods()) {
               map1.put("type", requestMethod.toString());
           }

list.add(map1);
       }

Springboot部分路由生效

问题记录

项目新增接口"foo",始终不生效,经排查发现controller层的@RequestMaping(value=“test”)统一加了基础路径"test",我新增的接口注解为@PostMappinp(“test/foo),导致生成的路由为"test/test/foo”, 调用地址为"test/foo",所以报了404。

来源:https://www.cnblogs.com/deityjian/p/12533302.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com