API 网关管理平台,基于 Spring Boot 3 + APISIX 构建的 API 全生命周期管理系统。
APIGateway 是一个 API 网关管理平台,提供 API 的创建、发布、下线等全生命周期管理功能。通过集成 Apache APISIX,实现路由的动态下发与管理。
| 技术 | 版本 | 说明 |
|---|---|---|
| Java | 17 | JDK 版本 |
| Spring Boot | 3.2.5 | 基础框架 |
| MyBatis-Plus | 3.5.7 | ORM 框架 |
| PostgreSQL | - | 数据库 |
| Apache APISIX | - | API 网关 |
| OpenAPI Generator | 7.4.0 | API 契约代码生成 |
src/main/java/com/finna/apigateway/ ├── api/ # OpenAPI 生成的接口定义 ├── application/ # 应用服务层 │ └── service/ # 业务服务接口与实现 ├── common/ # 公共模块 │ ├── config/ # 配置类 │ ├── constant/ # 常量定义 │ └── util/ # 工具类 ├── controller/ # 控制器层 ├── domain/ # 领域模型 │ ├── model/ # 业务对象 │ └── service/ # 领域服务 ├── exception/ # 异常处理 ├── infrastructure/ # 基础设施层 │ ├── client/ # APISIX 客户端 │ ├── converter/ # 对象转换器 │ ├── mapper/ # MyBatis Mapper │ ├── model/ # 数据库实体 │ └── repository/ # 仓储实现 └── ApiGatewayApplication.java
创建数据库并执行初始化脚本:
psql -U postgres -c "CREATE DATABASE apig;"
psql -U postgres -d apig -f src/main/resources/db/gateway.sql
在 application.yaml 中配置 APISIX Admin API:
apisix:
admin-url: http://your-apisix-admin:9180
api-key: your-api-key
或通过环境变量配置:
export APISIX_ADMIN_URL=http://your-apisix-admin:9180
export APISIX_API_KEY=your-api-key
# 编译项目
mvn clean package -DskipTests
# 运行应用
java -jar target/APIGateway-0.0.1-SNAPSHOT.jar
服务启动后访问:http://localhost:8885
# 构建镜像
docker build -t apigateway:latest .
# 运行容器
docker run -d \
--name apigateway \
-p 8885:8080 \
-e APISIX_ADMIN_URL=http://apisix:9180 \
-e APISIX_API_KEY=your-api-key \
-e SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/apig \
-e SPRING_DATASOURCE_USERNAME=postgres \
-e SPRING_DATASOURCE_PASSWORD=your-password \
apigateway:latest
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /v1/apig/group | 创建分组 |
| GET | /v1/apig/group | 查询所有分组 |
| GET | /v1/apig/group/{groupId} | 查询分组详情 |
| PUT | /v1/apig/group/{groupId} | 更新分组 |
| DELETE | /v1/apig/group/{groupId} | 删除分组 |
| POST | /v1/apig/group/{groupId}/bind | 绑定域名 |
| POST | /v1/apig/group/{groupId}/unbind | 解绑域名 |
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /v1/apig/api | 创建 API |
| GET | /v1/apig/api | 查询所有 API |
| GET | /v1/apig/api/{apiId} | 查询 API 详情 |
| PUT | /v1/apig/api/{apiId} | 更新 API |
| DELETE | /v1/apig/api/delete/{apiId} | 删除 API |
| POST | /v1/apig/api/import-swagger | 导入 OpenAPI 规范 |
| POST | /v1/apig/api/deploy | 发布 API 到 APISIX |
| POST | /v1/apig/api/abolish | 下线 API |
| POST | /v1/apig/api/bind-service/batch | 批量绑定服务 |
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /v1/apig/service | 创建服务 |
| GET | /v1/apig/service | 查询所有服务 |
| GET | /v1/apig/service/{serviceId} | 查询服务详情 |
| PUT | /v1/apig/service/{serviceId} | 更新服务 |
| DELETE | /v1/apig/service/{serviceId} | 删除服务 |
| 字段 | 类型 | 说明 |
|---|---|---|
| id | varchar(36) | 主键 |
| name | varchar(50) | 分组名称 |
| description | text | 描述 |
| 字段 | 类型 | 说明 |
|---|---|---|
| id | varchar(36) | 主键 |
| route_id | varchar(36) | APISIX 路由 ID |
| group_id | varchar(36) | 分组 ID |
| name | varchar(50) | API 名称 |
| method | varchar(10) | HTTP 方法 |
| path | varchar(255) | API 路径 |
| status | varchar(10) | 状态 (created/published/offline) |
| service_id | varchar(36) | 后端服务 ID |
| 字段 | 类型 | 说明 |
|---|---|---|
| id | varchar(36) | 主键 |
| upstream_id | varchar(36) | APISIX Upstream ID |
| name | varchar(50) | 服务名称 |
| address | varchar(255) | 服务地址 |
| type | varchar(20) | 服务类型 |
项目使用 OpenAPI Generator 自动生成 API 接口代码:
mvn clean generate-sources
OpenAPI 规范文件位于:src/main/resources/openapi/gateway.yaml
mvn test
MIT License