# api-manage **Repository Path**: myymd/api-manage ## Basic Information - **Project Name**: api-manage - **Description**: api开放平台:一个提供 API 接口供开发者调用的平台。 管理员可以接入并发布接口,统计分析各接口调用情况;用户可以注册登录并开通接口调用权限,然后可以浏览接口及在线调试,还能使用客户端 SDK 轻松在代码中调用接口。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2025-10-10 - **Last Updated**: 2025-10-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # API管理平台 一个基于Dubbo + Nacos的微服务架构API管理平台,提供API的统一管理、调用、监控和权限控制等功能。 ## 项目概述 本平台旨在解决企业级API管理的痛点,提供完整的API生命周期管理解决方案。通过微服务架构,实现了高可用性、可扩展性和安全性,同时支持多环境部署和监控。 主要特性: - 完整的API生命周期管理(创建、发布、下线、版本控制) - 基于JWT的统一认证授权机制 - 细粒度的权限控制和访问策略 - 全面的API调用监控和统计分析 - 支持RESTful API设计规范 - 高可用微服务架构设计 - 完善的错误处理和异常捕获机制 - 统一的响应格式和接口规范 ## 项目架构 ![架构图]() ### 核心组件 - **Nacos**: 服务注册与配置中心,管理服务实例和配置信息,支持动态服务发现和配置管理 - **Dubbo**: 分布式服务框架,实现服务间的远程调用,支持多种协议和负载均衡策略 - **网关服务(api-gateway)**: 请求入口,负责路由转发、权限验证、限流、熔断降级和请求日志记录,基于Spring Cloud Gateway实现 - **认证中心(auth-center)**: 用户认证、授权和会话管理,基于Spring Security+JWT实现,提供统一的身份认证服务 - **API管理服务(api-service)**: API的CRUD、版本管理和生命周期管理,支持API的创建、发布、下线和版本回溯 - **监控服务(monitor-service)**: API调用统计、性能监控和日志分析,提供多维度的统计报表和可视化 - **用户中心(user-center)**: 用户管理和授权服务,负责用户、角色、权限和部门的管理 - **公共模块(api-common)**: 公共DTO、工具类和常量定义,提供统一的响应格式和异常处理机制 ## 快速开始 ### 环境准备 - JDK - Maven - MySQL - Nacos ### 数据库配置 1. 创建数据库:`api_manage` 2. 导入数据库脚本:`docs/sql/api_manage.sql` ### 启动步骤 1. 启动Nacos服务: `sh startup.sh -m standalone` (Linux/Mac) 或 `startup.cmd -m standalone` (Windows) 2. 编译项目: `mvn clean install` 3. 启动各个微服务(按顺序): - 启动认证中心: `cd auth-center && mvn spring-boot:run` - 启动API管理服务: `cd ../api-service && mvn spring-boot:run` - 启动监控服务: `cd ../monitor-service && mvn spring-boot:run` - 启动网关服务: `cd ../api-gateway && mvn spring-boot:run` 4. 访问网关接口: http://localhost:8080 ## 模块说明 ### 1. api-common 公共模块,包含各个服务间共享的DTO、工具类、常量定义和异常处理机制。 - 提供统一的响应格式 - 定义公共的数据传输对象 - 提供通用的工具类和辅助方法 - 实现全局异常处理机制 ### 2. auth-center 认证中心,负责用户认证和授权管理,基于Spring Security+JWT实现。主要功能包括: - 用户登录、登出 - JWT令牌生成、刷新和验证 - 用户信息查询和管理 - 基于角色和权限的访问控制 - 黑名单管理,防止令牌滥用 ### 3. api-service API管理服务,负责API的CRUD和版本管理。主要功能包括: - API的创建、更新、删除 - API的发布、下线 - API版本管理和历史回溯 - API的查询和分页 - API的详细信息管理 ### 4. monitor-service 监控服务,负责API调用统计和监控。主要功能包括: - API调用日志记录 - API调用统计分析 - API性能监控 - 按API、用户、时间范围等多维度查询日志和统计数据 - 提供API调用概览统计 ### 5. api-gateway API网关,作为系统的统一入口。主要功能包括: - 请求路由转发 - 权限验证 - 限流控制 - API调用监控 - 跨域请求处理 ### 6. user-center 用户中心,负责用户管理和授权服务。主要功能包括: - 用户基本信息管理 - 用户角色和权限管理 - 部门管理 - 用户配置管理 - 全局异常处理 ## API文档 ### 认证相关API #### 用户登录 - **URL**: /api/auth/login - **Method**: POST - **Request Body**: ```json { "username": "string", // 用户名 "password": "string" // 密码 } ``` - **Response**: ```json { "code": 200, "message": "success", "data": { "token": "string", // JWT令牌 "username": "string", // 用户名 "roles": ["string"] // 用户角色列表 } } ``` #### 用户登出 - **URL**: /api/auth/logout - **Method**: POST - **Headers**: Authorization: Bearer {token} - **Response**: ```json { "code": 200, "message": "登出成功", "data": null } ``` #### 获取当前用户信息 - **URL**: /api/auth/getCurrentUserInfo - **Method**: GET - **Headers**: Authorization: Bearer {token} - **Response**: ```json { "code": 200, "message": "success", "data": { "username": "string", // 用户名 "email": "string", // 邮箱 "phone": "string", // 电话 "role": "string" // 角色 } } ``` ### API管理相关API #### 创建API - **URL**: /api/service/api - **Method**: POST - **Headers**: Authorization: Bearer {token} - **Request Body**: ```json { "name": "string", // API名称 "code": "string", // API编码 "description": "string", // API描述 "projectId": 1 // 所属项目ID } ``` - **Response**: ```json { "code": 200, "message": "创建成功", "data": { "id": 1, // API ID "name": "string", // API名称 "code": "string", // API编码 "description": "string", // 描述 "projectId": 1, // 项目ID "status": 0, // 状态:0草稿,1发布,2下线 "createTime": "string" // 创建时间 } } ``` #### 更新API - **URL**: /api/service/api - **Method**: PUT - **Headers**: Authorization: Bearer {token} - **Request Body**: ```json { "id": 1, // API ID "name": "string", // API名称 "code": "string", // API编码 "description": "string", // API描述 "projectId": 1 // 所属项目ID } ``` - **Response**: ```json { "code": 200, "message": "更新成功", "data": null } ``` #### 获取API详情 - **URL**: /api/service/api/{id} - **Method**: GET - **Headers**: Authorization: Bearer {token} - **Response**: ```json { "code": 200, "message": "success", "data": { "id": 1, // API ID "name": "string", // API名称 "code": "string", // API编码 "description": "string", // 描述 "projectId": 1, // 项目ID "status": 0, // 状态 "createTime": "string", // 创建时间 "updateTime": "string" // 更新时间 } } ``` #### 分页查询API - **URL**: /api/service/api/page - **Method**: GET - **Headers**: Authorization: Bearer {token} - **Parameters**: - pageNum: 当前页码 - pageSize: 每页条数 - name: API名称(可选) - code: API编码(可选) - projectId: 项目ID(可选) - **Response**: ```json { "code": 200, "message": "success", "data": { "total": 100, // 总记录数 "list": [/* API列表 */] } } ``` #### 发布API - **URL**: /api/service/api/publish/{id} - **Method**: POST - **Headers**: Authorization: Bearer {token} - **Response**: ```json { "code": 200, "message": "发布成功", "data": null } ``` #### 下线API - **URL**: /api/service/api/offline/{id} - **Method**: POST - **Headers**: Authorization: Bearer {token} - **Response**: ```json { "code": 200, "message": "下线成功", "data": null } ``` ### 监控相关API - GET /api/monitor/log/page - 分页查询API调用日志 - GET /api/monitor/log/api/{apiId} - 根据API ID查询调用日志 - GET /api/monitor/log/user/{userId} - 根据用户ID查询调用日志 - GET /api/monitor/statistics/page - 分页查询API调用统计 - GET /api/monitor/statistics/api/{apiId} - 根据API ID和日期范围查询统计 - GET /api/monitor/statistics/overview - 获取API调用概览统计 ## 技术栈 ### 后端 - **框架**: Spring Boot 3.1.5、Dubbo 3.2.0、MyBatis-Plus 3.5.3 - **安全框架**: Spring Security 6.1.5 - **认证机制**: JWT (JSON Web Token) 0.12.x - **注册中心**: Nacos 2.2.0 - **数据库**: MySQL 8.0 - **缓存**: Redis 6.2.6 - **构建工具**: Maven 3.8.6 - **编程语言**: Java 17+ - **消息队列**: RabbitMQ 3.11.10 (可选) ### 前端 - **框架**: React 17.x、TypeScript 4.x - **UI组件库**: Ant Design 4.x - **状态管理**: Redux Toolkit - **路由**: React Router ## 后端开发规范 ### 代码注释规范 - 所有类、接口、方法必须添加Javadoc注释 - 类注释应说明类的主要职责和设计意图 - 方法注释应包含参数说明、返回值描述和异常情况 - 关键业务逻辑和复杂算法应有实现说明 - 使用标准的JavaDoc标签如@param、@return、@throws、@author、@version等 ### 命名规范 - 类名:使用大驼峰命名法,如`UserController` - 方法名:使用小驼峰命名法,如`getUserInfo` - 变量名:使用小驼峰命名法,如`userName` - 常量名:使用全大写字母加下划线分隔,如`MAX_PAGE_SIZE` - 包名:使用小写字母,如`com.apimanage.common.utils` ### 安全规范 - 所有敏感接口必须进行权限验证 - 用户密码必须进行加密存储(BCrypt) - 接口调用必须进行请求参数校验 - 使用JWT进行身份认证,避免session管理 - 敏感数据传输必须使用HTTPS - 防止SQL注入、XSS攻击等常见安全漏洞 ### 异常处理 - 使用统一的异常处理机制 - 对不同类型的异常提供友好的错误提示 - 记录异常日志,便于排查问题 - 避免在生产环境泄露敏感信息 ## 部署说明 ### 开发环境 按照快速开始中的步骤进行部署。 ### 生产环境 1. 准备生产环境服务器 2. 部署Nacos集群 3. 配置数据库主从复制 4. 使用Docker容器化部署各个微服务 5. 配置反向代理(如Nginx) 6. 配置HTTPS ## 贡献指南 1. Fork项目仓库 2. 创建功能分支 3. 提交代码 4. 推送到远程仓库 5. 创建Pull Request ## License [MIT](LICENSE)