千家信息网

Springboot项目怎么获取所有的接口

发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这篇文章主要讲解了"Springboot项目怎么获取所有的接口",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Springboot项目怎么获取所有的接口
千家信息网最后更新 2025年11月13日Springboot项目怎么获取所有的接口

这篇文章主要讲解了"Springboot项目怎么获取所有的接口",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Springboot项目怎么获取所有的接口"吧!

目录
  • Springboot项目获取所有接口

  • 获取项目下所有http接口的信息

    • 一、接口信息类

    • 二、单元测试

Springboot项目获取所有接口

@Autowiredprivate WebApplicationContext applicationContext; @Overridepublic List getAllUrl() {    RequestMappingHandlerMapping mapping = applicationContext.getBean(RequestMappingHandlerMapping.class);    // 获取url与类和方法的对应信息    Map map = mapping.getHandlerMethods();     List> list = new ArrayList>();    for (Map.Entry m : map.entrySet()) {        Map map1 = new HashMap();        RequestMappingInfo info = m.getKey();        HandlerMethod method = m.getValue();        //获取当前方法所在类名        Class bean = method.getBeanType();        //使用反射获取当前类注解内容        Api api = bean.getAnnotation(Api.class);        RequestMapping requestMapping = bean.getAnnotation(RequestMapping.class);  String[] value = requestMapping.value();  map1.put("parent",value[0])        //获取方法上注解以及注解值        ApiOperation methodAnnotation = method.getMethodAnnotation(ApiOperation.class);        String privilegeName = methodAnnotation.notes();        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);    }    return list;}

获取项目下所有http接口的信息

一、接口信息类

新建一个类用于存放http接口的相关信息

class RequestToMethodItem {        public String controllerName;    public String methodName;    public String requestType;    public String requestUrl;    public Class[] methodParmaTypes;        public String getControllerName() {                return controllerName;        }        public void setControllerName(String controllerName) {                this.controllerName = controllerName;        }        public String getMethodName() {                return methodName;        }        public void setMethodName(String methodName) {                this.methodName = methodName;        }        public String getRequestType() {                return requestType;        }        public void setRequestType(String requestType) {                this.requestType = requestType;        }        public String getRequestUrl() {                return requestUrl;        }        public void setRequestUrl(String requestUrl) {                this.requestUrl = requestUrl;        }        public Class[] getMethodParmaTypes() {                return methodParmaTypes;        }        public void setMethodParmaTypes(Class[] methodParmaTypes) {                this.methodParmaTypes = methodParmaTypes;        }    public RequestToMethodItem(String requestUrl, String requestType, String controllerName, String requestMethodName, Class[] methodParmaTypes){        this.requestUrl = requestUrl;        this.requestType = requestType;        this.controllerName = controllerName;        this.methodName = requestMethodName;        this.methodParmaTypes = methodParmaTypes;    }}

二、单元测试

写两个http接口用于测试

import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.ResponseBody;@Controllerpublic class TestController {        @GetMapping(value = "/test1")        @ResponseBody        public void test1(Integer a) {        }                @PostMapping(value = "/test2")        @ResponseBody        public void test2(Integer a,Integer b) {        }}

测试单元

import java.util.ArrayList;import java.util.List;import java.util.Map;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;import org.springframework.web.context.WebApplicationContext;import org.springframework.web.method.HandlerMethod;import org.springframework.web.servlet.mvc.condition.PatternsRequestCondition;import org.springframework.web.servlet.mvc.condition.RequestMethodsRequestCondition;import org.springframework.web.servlet.mvc.method.RequestMappingInfo;import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;import cn.hutool.json.JSONUtil; //hutool是一个很方便的工具包@SpringBootTest@RunWith(SpringRunner.class)public class Test {          @Autowired    WebApplicationContext applicationContext;            @org.junit.Test        public void index() {                List requestToMethodItemList = new ArrayList();        RequestMappingHandlerMapping requestMappingHandlerMapping = applicationContext.getBean(RequestMappingHandlerMapping.class);        Map handlerMethods = requestMappingHandlerMapping.getHandlerMethods();                for (Map.Entry requestMappingInfoHandlerMethodEntry : handlerMethods                                .entrySet()) {                        RequestMappingInfo requestMappingInfo = requestMappingInfoHandlerMethodEntry.getKey();                                                   RequestMethodsRequestCondition methodCondition = requestMappingInfo.getMethodsCondition();                        PatternsRequestCondition patternsCondition = requestMappingInfo.getPatternsCondition();                        HandlerMethod mappingInfoValue = requestMappingInfoHandlerMethodEntry.getValue();                                                // 请求类型                        String requestType = methodCondition.getMethods().toString();                                            // 请求路径                        String requestUrl = patternsCondition.getPatterns().iterator().next();                        // 控制器名称                        String controllerName = mappingInfoValue.getBeanType().toString();                        // 请求方法名                        String requestMethodName = mappingInfoValue.getMethod().getName();                        // 请求参数                        Class[] methodParamTypes = mappingInfoValue.getMethod().getParameterTypes();                                                // Spring通过BasicErrorController进行统一的异常处理,不计入这些API                        if("class org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController".equals(controllerName)) {                                continue;                        }                                                RequestToMethodItem item = new RequestToMethodItem(requestUrl, requestType, controllerName,                                        requestMethodName, methodParamTypes);                        requestToMethodItemList.add(item);                                                              }                                System.out.println(JSONUtil.toJsonStr(requestToMethodItemList));                        }}

测试结果

感谢各位的阅读,以上就是"Springboot项目怎么获取所有的接口"的内容了,经过本文的学习后,相信大家对Springboot项目怎么获取所有的接口这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

接口 项目 信息 方法 测试 内容 单元 注解 学习 类名 两个 参数 名称 就是 工具 工具包 思路 情况 所在 控制器 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 衢州网络安全教育平台登录 访问sql数据库的三个认证过程 乐麦网 软件开发 厦门人才 迷你世界的服务器是互通的吗 杭州正规软件开发价位 现在软件开发培训班靠谱吗 虹口区推广软件开发费用是多少 浙江什么是网络技术标准 无法删掉模板数据库 登陆英雄联盟服务器就没了 中国网络安全设备市场分析 鑫顺网络技术有限公司 自动撮合交易软件开发北京 埃提耶什服务器金团 网站开发中的网络技术有哪些 国旗下演讲网络安全 物流的硬件软件开发 全民夺宝软件开发需要多少钱 湖北交友软件开发费用是多少 十堰市张湾区网络安全评测答案 软件开发去哪里接活 360t3云服务器 服务器如何查看磁盘是否损坏 神通数据库逻辑恢复 什么语言能调用数据库 使用数据库管理基本思想与方法 算力网络技术图谱 智能网联汽车网络安全任务 岳阳靠谱软件开发公司 数据库表单命名
0