API 网关

API 网关负责统一路由、全局限流、访问日志、Webhook 事件推送和审计日志,所有接口均为管理员专用。


9.1 路由管理

路由规则列表

GET /admin/v1/gateway/routes

{
  "code": 0,
  "data": {
    "items": [
      {
        "route_id": "route_001",
        "name": "AI 网关路由",
        "path_prefix": "/api/v1/chat/",
        "upstream": "http://ai-gateway:8001",
        "methods": ["POST"],
        "status": "active",
        "created_at": "2024-01-01T00:00:00Z"
      }
    ]
  }
}

添加路由规则

POST /admin/v1/gateway/routes

{
  "name": "业务后端路由",
  "path_prefix": "/api/v1/",
  "upstream": "http://business:8000",
  "methods": ["GET", "POST", "PUT", "DELETE"],
  "strip_prefix": false,
  "timeout_ms": 30000
}

更新路由规则

PUT /admin/v1/gateway/routes/{route_id}

删除路由规则

DELETE /admin/v1/gateway/routes/{route_id}


9.2 全局限流

限流规则列表

GET /admin/v1/gateway/rate-limits

{
  "code": 0,
  "data": {
    "items": [
      {
        "limit_id": "rl_global_001",
        "name": "全局 IP 限流",
        "dimension": "ip",
        "requests_per_minute": 300,
        "requests_per_day": 50000,
        "action": "reject",
        "status": "active"
      }
    ]
  }
}

创建限流规则

POST /admin/v1/gateway/rate-limits

{
  "name": "API Key 每分钟限流",
  "dimension": "api_key",
  "requests_per_minute": 60,
  "requests_per_day": 10000,
  "action": "reject"
}

dimension 枚举:ip / api_key / user_id
action 枚举:reject / queue

更新限流规则

PUT /admin/v1/gateway/rate-limits/{limit_id}

删除限流规则

DELETE /admin/v1/gateway/rate-limits/{limit_id}


9.3 访问日志

访问日志列表

GET /admin/v1/gateway/logs

查询参数 说明
api_key_id 按 API Key 筛选
path 按接口路径筛选
status_code 按 HTTP 状态码筛选
start_time 开始时间
end_time 结束时间
page 页码
page_size 每页条数
{
  "code": 0,
  "data": {
    "items": [
      {
        "log_id": "log_01HX...",
        "method": "POST",
        "path": "/api/v1/chat/completions",
        "status_code": 200,
        "latency_ms": 1240,
        "api_key_id": "key_01HX...",
        "user_id": "u_01HX...",
        "ip": "1.2.3.4",
        "request_size": 1024,
        "response_size": 4096,
        "created_at": "2024-01-01T12:00:00Z"
      }
    ],
    "total": 125000
  }
}

指定 API Key 流量统计

GET /admin/v1/gateway/stats/apikey/{key_id}

{
  "code": 0,
  "data": {
    "key_id": "key_01HX...",
    "period": "today",
    "request_count": 1250,
    "success_count": 1230,
    "error_count": 20,
    "success_rate": "98.4%",
    "avg_latency_ms": 980,
    "p99_latency_ms": 3200
  }
}

网关流量统计

GET /admin/v1/gateway/stats

{
  "code": 0,
  "data": {
    "period": "today",
    "total_requests": 128500,
    "success_rate": "99.1%",
    "avg_qps": 1.49,
    "peak_qps": 45.2,
    "avg_latency_ms": 890,
    "p99_latency_ms": 2800,
    "rate_limited_count": 234
  }
}

9.4 Webhook 管理

Webhook 端点列表

GET /admin/v1/gateway/webhooks

{
  "code": 0,
  "data": {
    "items": [
      {
        "webhook_id": "wh_01HX...",
        "name": "充值成功通知",
        "url": "https://partner.example.com/webhooks/recharge",
        "event_types": ["recharge.success", "balance.low"],
        "status": "active",
        "secret": "whsec_****",
        "created_at": "2024-01-01T00:00:00Z"
      }
    ]
  }
}

创建 Webhook

POST /admin/v1/gateway/webhooks

{
  "name": "充值成功通知",
  "url": "https://partner.example.com/webhooks/recharge",
  "event_types": ["recharge.success", "balance.low"],
  "secret": "my_webhook_secret"
}

可订阅的事件类型(event_types):

事件类型 触发时机
recharge.success 充值到账
balance.low 余额低于预警阈值
membership.expired 会员到期
apikey.expired API Key 到期
usage.quota_exceeded 用量超配额
model.degraded 模型发生降级切换
order.paid 订单支付成功
order.refunded 订单退款完成

更新 Webhook

PUT /admin/v1/gateway/webhooks/{webhook_id}

删除 Webhook

DELETE /admin/v1/gateway/webhooks/{webhook_id}

发送测试事件

POST /admin/v1/gateway/webhooks/{webhook_id}/test

{ "event_type": "recharge.success" }

Webhook 投递日志

GET /admin/v1/gateway/webhooks/{webhook_id}/logs

{
  "code": 0,
  "data": {
    "items": [
      {
        "log_id": "whl_001",
        "event_type": "recharge.success",
        "status": "success",
        "response_code": 200,
        "latency_ms": 245,
        "retry_count": 0,
        "sent_at": "2024-01-01T12:05:00Z"
      }
    ]
  }
}

9.5 审计日志

GET /admin/v1/gateway/audit-logs

查询参数 说明
user_id 按用户筛选
action 按操作类型筛选
start_time 开始时间
end_time 结束时间
{
  "code": 0,
  "data": {
    "items": [
      {
        "log_id": "audit_01HX...",
        "user_id": "u_01HX...",
        "user_email": "user@example.com",
        "action": "apikey.delete",
        "resource_type": "api_key",
        "resource_id": "key_01HX...",
        "ip": "1.2.3.4",
        "user_agent": "Mozilla/5.0...",
        "result": "success",
        "detail": { "key_name": "生产环境" },
        "created_at": "2024-01-01T12:00:00Z"
      }
    ]
  }
}

常见操作类型(action):

说明
user.login 用户登录
user.logout 用户登出
user.password_change 修改密码
apikey.create 创建 API Key
apikey.delete 删除 API Key
enterprise.sso_config 修改 SSO 配置
admin.user_freeze 冻结用户
admin.balance_adjust 手动调整余额