基于 Vue 3 + Naive UI 开发的 API 网关管理前端,适用于中小企业。
cd gateway-admin
npm install
编辑 vite.config.js,修改代理目标地址:
server: {
proxy: {
'/v1': {
target: 'http://your-gateway-api:8080', // 修改为实际地址
changeOrigin: true
}
}
}
npm run dev
npm run build
docker build -t gateway-admin .
docker run -d -p 8088:8088 --name gateway-admin gateway-admin
编辑 nginx.conf 文件,修改 API 代理地址:
location /api/ { proxy_pass http://your-backend-host:8080/api/; # ... }
使用 docker-compose 同时管理前后端服务,前端通过容器网络访问后端。
修改 docker-compose.yml 中的后端镜像:
gateway-backend:
image: your-backend-image:latest # 替换为实际的后端镜像
如果后端需要构建,替换为:
gateway-backend:
build:
context: ../gateway-backend # 后端项目路径
dockerfile: Dockerfile
nginx.conf 已配置通过容器名称访问后端:
location /api/ { proxy_pass http://gateway-backend:8080; }
# 启动所有服务
docker-compose up -d
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down
gateway-admin/ ├── src/ │ ├── api/ # API 接口定义 │ │ ├── request.js # Axios 实例 │ │ ├── group.js # 分组管理 API │ │ ├── apiInfo.js # API 管理 API │ │ ├── service.js # 服务管理 API │ │ └── apiSix.js # APISIX API │ ├── components/ # 公共组件 │ ├── layouts/ # 布局组件 │ │ └── MainLayout.vue │ ├── router/ # 路由配置 │ ├── stores/ # Pinia 状态管理 │ ├── views/ # 页面视图 │ │ ├── group/ # 分组管理 │ │ ├── api/ # API 管理 │ │ ├── service/ # 服务管理 │ │ └── apisix/ # APISIX 路由 │ ├── App.vue │ └── main.js ├── index.html ├── package.json ├── vite.config.js └── README.md
基于 OpenAPI 3.0 规范,详见 gateway.yaml。
| 模块 | 接口 | 说明 |
|---|---|---|
| 分组 | GET /v1/apig/groups | 获取所有分组 |
| 分组 | POST /v1/apig/groups | 创建分组 |
| 分组 | PUT /v1/apig/groups/{groupId} | 更新分组 |
| 分组 | DELETE /v1/apig/groups/{groupId} | 删除分组 |
| 分组 | POST /v1/apig/group/{groupId}/bind | 绑定域名 |
| API | GET /v1/apig/api | 获取所有 API |
| API | POST /v1/apig/api | 创建 API |
| API | POST /v1/apig/api/deploy | 发布 API |
| API | POST /v1/apig/api/abolish | 下线 API |
| API | POST /v1/apig/api/import-swagger | 导入 Swagger |
| 服务 | GET /v1/apig/service | 获取所有服务 |
| 服务 | POST /v1/apig/service | 创建服务 |
| APISIX | GET /v1/apig/apisix/route | 获取所有路由 |
src/views/ 下创建新目录和组件src/router/index.js 添加路由src/layouts/MainLayout.vue 添加菜单项src/api/ 下创建或编辑对应模块的 API 文件request.js 中的 axios 实例MIT