/**
* 控制器
*
*
* @author
*/
@RestController
@AllArgsConstructor
@RequestMapping("/url")
@Api(value = "", tags = "")
public class URLAllController {
@Autowired
private WebApplicationContext applicationContext;
@RequestMapping(value = "/getAllURL", method = RequestMethod.POST)
public void getAllURL(HttpServletResponse response) {
List<Map<String, String>> resultList = new ArrayList<>();
List<URL_message_excel> interface_messages = new ArrayList<>();
RequestMappingHandlerMapping requestMappingHandlerMapping = applicationContext.getBean(RequestMappingHandlerMapping.class);
// 获取url与类和方法的对应信息
Map<RequestMappingInfo, HandlerMethod> map = requestMappingHandlerMapping.getHandlerMethods();
for (Map.Entry<RequestMappingInfo, HandlerMethod> mappingInfoHandlerMethodEntry : map.entrySet()) {
Map<String, String> 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 (annotation instanceof Api) {
Api api = (Api) annotation;
resultMap.put("classDesc", api.value());
} else if (annotation instanceof 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 (annotation instanceof ApiOperation) {
ApiOperation methodDesc = (ApiOperation) annotation;
String desc = methodDesc.value();
resultMap.put("methodDesc", desc);//接口描述
}
}
}
PatternsRequestCondition p = requestMappingInfo.getPatternsCondition();
for (String url : p.getPatterns()) {
resultMap.put("methodURL", url);//请求URL
}
RequestMethodsRequestCondition methodsCondition = requestMappingInfo.getMethodsCondition();
for (RequestMethod requestMethod : methodsCondition.getMethods()) {
resultMap.put("requestType", requestMethod.toString());//请求方式:POST/PUT/GET/DELETE
}
if (resultMap.get("className") == null) {
resultMap.put("className", "");
}
if (resultMap.get("classDesc") == null) {
resultMap.put("classDesc", "");
}
if (resultMap.get("classURL") == null) {
resultMap.put("classURL", "");
}
if (resultMap.get("methodName") == null) {
resultMap.put("methodName", "");
}
if (resultMap.get("methodDesc") == null) {
resultMap.put("methodDesc", "");
}
if (resultMap.get("methodURL") == null) {
resultMap.put("methodURL", "");
}
if (resultMap.get("requestType") == null) {
resultMap.put("requestType", "");
}
resultList.add(resultMap);
resultMap.put("methodDesc",resultMap.get("classDesc")+"-"+resultMap.get("methodDesc"));
URL_message_excel copy = BeanUtil.copy(resultMap, URL_message_excel.class);
interface_messages.add(copy);
}
ExcelUtil.export(response, "数据" + DateUtil.time(), "数据表", interface_messages, URL_message_excel.class);
}
}
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import lombok.Data;
import java.io.Serializable;
@Data
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
public class URL_message_excel implements Serializable {
private static final long serialVersionUID = 1L;
@ExcelProperty("类名")
private String className;
@ExcelProperty("类地址")
private String classURL;
@ExcelProperty("类描述")
private String classDesc;
@ExcelProperty("方法名")
private String methodName;
@ExcelProperty("方法描述")
private String methodDesc;
@ExcelProperty("方法地址")
private String methodURL;
@ExcelProperty("方法类型")
private String requestType;
}
ExcelUtil 工具类根据自己项目调整
效果