该项目是一个基于 Vue3 + SpringBoot + Dubbo + Gateway 的个人API开放平台,旨在提供一个类似于腾讯API平台的接口管理和调用平台。管理员可以接入并发布接口,用户可以开通接口调用权限、浏览接口以及在线调试,并通过客户端 SDK 调用接口,同时开发者用户可以在平台上传并发布接口
此项目为个人学习项目,任何人都可以免费使用。目前在搭建基本框架的基础上仅完成了API平台主要的功能,如果想上线使用还有很多功能待完善,如果对此项目感兴趣欢迎一起交流学习
该项目前端仅为测试接口和展示平台效果,比较简陋,但也足以体现项目的主要**。所以以下项目介绍以后端为主,前端部分请自行查看源码
随着互联网的快速发展和数字化转型的推进,越来越多的组织和个人开始提供各种类型的API(应用程序编程接口),用于实现不同系统之间的数据交互和功能集成。API的广泛应用使得开放平台逐渐成为互联网行业的一个重要组成部分
腾讯API平台作为国内知名的API开放平台之一,提供了丰富的接口资源和灵活的接口管理工具,帮助企业和开发者轻松构建自己的应用生态系统。然而,对于个人开发者和小型组织而言,接入和使用腾讯API平台可能存在一定的门槛和限制
因此我想开发一个仿照腾讯API平台的个人API开放平台,旨在为个人开发者、小型组织以及其他希望提供API服务的用户提供一个简单易用、灵活可扩展的接口管理和调用平台
本项目采用了现代化的技术栈,包括Vue3作为前端框架、SpringBoot作为后端框架,以及Dubbo作为微服务框架和Gateway作为API网关,以确保系统的性能、稳定性和扩展性
- 管理员功能:
- 接入并发布接口:管理员可以接入第三方接口,并在平台上发布它们,方便用户调用
- 路由管理:根据接口定制网关路由,实现接口细粒度的管理
- 可视化接口状态和调用情况:管理员可以通过平台界面直观地查看各接口的状态和调用情况
- 用户功能:
- 开通接口调用权限:用户可以请求开通某个接口的调用权限,待管理员审核通过后即可使用
- 浏览接口:用户可以在平台上浏览已发布的接口,并查看其相关信息和文档
- 在线调试:用户可以通过平台提供的在线调试工具对接口进行调试和测试
- 开发者用户功能:
- 上传并发布接口:开发者用户可以在平台上上传自己开发的接口,并发布到平台供其他用户调用
- 平台功能:
- 统一鉴权:通过给用户签发签名(accessKey,secretKey)实现API签名认证,保证接口调用安全
- 动态路由:网关的路由设置不在配置文件写死,启动时从数据库动态加载,并在使用过程中通过调用网关暴露的接口实现路由的动态管理
- Java 1.8
- Spring Boot 2.x
- MyBatis (Plus)
- MySQL
- Redis
- Spring Cloud Gateway
- Nacos
- Dubbo
- Gson
- Hutools
- Vue3全家桶
- TypeScript
- Element Plus
- Vite
- Axios
- fengapi_backend:API平台后端主模块,提供用户管理,接口管理,网关路由管理等功能
- fengapi_gateway:网关模块,对开放API的调用进行统一管理,实现了动态路由、访问控制、接口限流,并集中处理签名校验、请求参数校验、接口调用统计等业务逻辑
- fengapi_common:公共服务接口模块,为实现模块之间RPC调用抽象出的服务接口
- fengapi_client:API调用客户端SDK,主要为了打包成工具包,开发者在项目中直接引入即可轻松调用接口
- fengapi_interface:提供一些简单的测试接口方便开发过程中调试
项目开发初期并没有作为微服务项目去构建,之后功能逐渐完善后会更细致的划分出各个微服务模块
- 下载源码后进入fengapi_frontend目录
- 在项目根目录打开终端执行:
pnpm install
安装依赖 - 执行
vite
命令运行项目
- 安装maven依赖
- 用maven打包fengapi_common模块到本地仓库,并确保项目中引入该模块的坐标正确
- 执行fengapi.sql中的建表语句创建数据库表
- 修改配置文件中的数据源配置
- 安装Nacos并启动
- 修改fengapi_backend和fengapi_gateway模块中的Dubbo配置
关于Nacos和Dubbo的配置请参考官方文档
- 依次启动fengapi_backend,fengapi_gateway,fengapi_interface
- 进入fengapi_client,找到Test测试类测试接口调用