# apiOpen **Repository Path**: yzh-nb/apiOpen ## Basic Information - **Project Name**: apiOpen - **Description**: API开放平台,管理员能发布接口、管理接口。用户能够调用接口,并且通过客户端SDK调用接口。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-08-03 - **Last Updated**: 2025-05-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 项目介绍 接口开放调用平台。管理员可以接入并发布接口,可视化各接口调用情况;用户可以开通接口调用权限、浏览接口及在线调试,并通过客户端 SDK 轻松调用接口。 ## 技术栈 Spring Boot、SpringCloud Gateway、nacos、Dubbo、MySQL、Mybatis、Redis、Ression、Hutool工具类、knife4j+Swagger ## 项目亮点 1. 根据业务流程,将整个项目后端划分为 web 系统、模拟接口、公共模块、客户端 SDK、API 网关这 5 个子项目,并使用 Maven 进行多模块依赖管理和打包 2. 为防止接口被恶意调用,设计 API 签名认证算法,为用户分配唯一 accessKey/secretKey以鉴权,保障调用的安全性 3. 为解决开发者调用成本过高的问题(使用 HTTP + 封装签名去调用接口),基于 Spring Boot Starter 开发了客户端 SDK 4. 选用 Spring Cloud Gateway 作为 API 网关,实现了路由转发、访问控制,并集中处理签名校验、请求参数校验、接口调用统计等业务逻辑 5. 为解决多个子系统内代码大量重复的问题,抽象模型层和业务层代码为公共模块,并使用 Dubbo RPC 框架实现子系统间的高性能接口调用 6. 为了防止接口被攻击、恶意调用,在网关层加入基于 Redisson 的 RateLimiter 实现的分布式限流,控制单用户访问的频率 ## 使用教程 #### 模块 1. backed:后台管理模块 2. client-sdk:客户端SDK 3. common:公共模块 4. gateway:网关模块 5. interface:接口模块 #### SQL表 apiOpen-backend -> sql -> apiOpen.sql #### 使用流程 启动backend、gateway、interface的启动类 #### SDK使用 1. 引入依赖 ```xml com.yzh apiOpen-common 0.0.1 ``` 2. 配置密钥 ```yml apiopen: client: access-key: secret-key: ```