logo
0
0
WeChat Login
李景昌<lijingchang@bob-fintech.com>
修改构建相关

APIGateway

API 网关管理平台,基于 Spring Boot 3 + APISIX 构建的 API 全生命周期管理系统。

项目简介

APIGateway 是一个 API 网关管理平台,提供 API 的创建、发布、下线等全生命周期管理功能。通过集成 Apache APISIX,实现路由的动态下发与管理。

核心功能

  • 分组管理:API 分组的创建、查询、更新、删除,支持域名绑定
  • API 管理:API 的创建、查询、更新、删除,支持 OpenAPI 3.0 规范导入
  • 服务管理:后端服务的注册与管理
  • 路由下发:将 API 配置下发到 APISIX 网关
  • 批量绑定:批量将 API 绑定到后端服务

技术栈

技术版本说明
Java17JDK 版本
Spring Boot3.2.5基础框架
MyBatis-Plus3.5.7ORM 框架
PostgreSQL-数据库
Apache APISIX-API 网关
OpenAPI Generator7.4.0API 契约代码生成

项目结构

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

快速开始

环境要求

  • JDK 17+
  • Maven 3.6+
  • PostgreSQL 12+
  • Apache APISIX

配置说明

  • APISIX_ADMIN_URL: APISIX 转发面 API 地址
  • APISIX_API_KEY: APISIX 转发面 API 密钥

数据库配置

创建数据库并执行初始化脚本:

psql -U postgres -c "CREATE DATABASE apig;" psql -U postgres -d apig -f src/main/resources/db/gateway.sql

APISIX 配置

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 部署

# 构建镜像 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

API 接口

分组管理 (Group)

方法路径说明
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解绑域名

API 管理 (ApiInfo)

方法路径说明
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批量绑定服务

服务管理 (Service)

方法路径说明
POST/v1/apig/service创建服务
GET/v1/apig/service查询所有服务
GET/v1/apig/service/{serviceId}查询服务详情
PUT/v1/apig/service/{serviceId}更新服务
DELETE/v1/apig/service/{serviceId}删除服务

数据模型

分组 (api_groups)

字段类型说明
idvarchar(36)主键
namevarchar(50)分组名称
descriptiontext描述

API (api_infos)

字段类型说明
idvarchar(36)主键
route_idvarchar(36)APISIX 路由 ID
group_idvarchar(36)分组 ID
namevarchar(50)API 名称
methodvarchar(10)HTTP 方法
pathvarchar(255)API 路径
statusvarchar(10)状态 (created/published/offline)
service_idvarchar(36)后端服务 ID

服务 (services)

字段类型说明
idvarchar(36)主键
upstream_idvarchar(36)APISIX Upstream ID
namevarchar(50)服务名称
addressvarchar(255)服务地址
typevarchar(20)服务类型

开发指南

代码生成

项目使用 OpenAPI Generator 自动生成 API 接口代码:

mvn clean generate-sources

OpenAPI 规范文件位于:src/main/resources/openapi/gateway.yaml

运行测试

mvn test

License

MIT License