获取swagger 上url 和方法名(spring boot )

@Test

public void listComboCourse() {

List> resultList =new ArrayList<>();

  //RequestMappingHandlerMapping requestMappingHandlerMapping =

//    applicationContext.getBean(RequestMappingHandlerMapping.class);

  RequestMappingHandlerMapping requestMappingHandlerMapping =

(RequestMappingHandlerMapping)applicationContext.getBean("requestMappingHandlerMapping");

  // 获取url与类和方法的对应信息

  Map map = requestMappingHandlerMapping.getHandlerMethods();

  for (Map.Entry mappingInfoHandlerMethodEntry : map.entrySet()) {

Map resultMap =new LinkedHashMap<>();

      RequestMappingInfo requestMappingInfo = mappingInfoHandlerMethodEntry.getKey();

      HandlerMethod handlerMethod = mappingInfoHandlerMethodEntry.getValue();

      resultMap.put("className",handlerMethod.getMethod().getDeclaringClass().getName()); // 类名

      Annotation[] parentAnnotations = handlerMethod.getBeanType().getAnnotations();

      for (Annotation annotation : parentAnnotations) {

if (annotationinstanceof Api) {

Api api = (Api) annotation;

            resultMap.put("classDesc",api.value());

            resultMap.put("functionDesc",api.tags()[0].toString());//接口描述

        }else if (annotationinstanceof RequestMapping) {

RequestMapping requestMapping = (RequestMapping) annotation;

            if (null != requestMapping.value() && requestMapping.value().length >0) {

resultMap.put("classURL",requestMapping.value()[0]);//类URL

            }

}

}

resultMap.put("methodName", handlerMethod.getMethod().getName()); // 方法名

      Annotation[] annotations = handlerMethod.getMethod().getDeclaredAnnotations();

      if (annotations !=null) {

// 处理具体的方法信息

        for (Annotation annotation : annotations) {

if (annotationinstanceof ApiOperation) {

ApiOperation methodDesc = (ApiOperation) annotation;

              String desc = methodDesc.value();

              resultMap.put("methodDesc",desc);//接口描述

            }

}

}

PatternsRequestCondition p = requestMappingInfo.getPatternsCondition();

      for (String url : p.getPatterns()) {

if(!url.contains("app")){

resultMap.put("methodURL",url);//请求URL

        }

}

RequestMethodsRequestCondition methodsCondition = requestMappingInfo.getMethodsCondition();

      for (RequestMethod requestMethod : methodsCondition.getMethods()) {

resultMap.put("requestType",requestMethod.toString());//请求方式:POST/PUT/GET/DELETE

      }

resultList.add(resultMap);

  }

System.out.println(JSON.toJSON(resultList));

  resultList.forEach(a->{

});

}

你可能感兴趣的:(获取swagger 上url 和方法名(spring boot ))