Loading
close

模型网关

time 更新时间:2026-10-08 16:41:12

模型网关

PUT 替换路由配置;PATCH 仅修改 name / description。具体可用状态读取 ready / conditions,不能仅依赖创建成功。

方法 路径(产品接口统一前缀 /api/v1) 功能
GET /routes 查询网关路由
POST /routes 创建网关路由
PATCH /routes/{id} 更新网关路由显示信息
GET /routes/{id} 获取网关路由详情
PUT /routes/{id} 替换网关路由配置
DELETE /routes/{id} 删除网关路由
GET /service-backends 查询可选路由后端
GET /routes/filter-options 查询路由筛选项

查询网关路由

功能介绍

查询网关路由。

访问要求:有效 Token;需要对应资源读权限,并受项目、所有者、公共或共享资源规则限制。

URI

GET /api/v1/routes

查询参数

参数 类型 必选 描述
page integer 否 页码,从 1 开始
page_size integer 否 每页数量;建议显式传入,例如 20;省略时部分列表返回全部
name string 否 显示名称
hostname string 否 筛选参数 hostname
model string 否 对外模型名称
backend string 否 后端资源标识
status string 否 资源状态;具体取值见业务规则
domain_id string 否 筛选参数 domain_id
project_id string 否 筛选参数 project_id
ids string 否 逗号分隔的路由 ID;按指定资源集合筛选
sort string 否 排序表达式
sort_field string 否 筛选参数 sort_field
sort_order string 否 筛选参数 sort_order
created_from string 否 创建时间下界,RFC3339,可只指定一端
created_to string 否 创建时间上界,RFC3339,可只指定一端

请求消息

无请求体。

响应消息

参数 参数类型 描述
items array<route.response> 结果列表
total integer 匹配总数
page integer 页码,从 1 开始
page_size integer 每页数量

请求示例

GET https://{endpoint}/api/v1/routes?page=1&page_size=20
x-keystone-token: <Keystone Token>

正常响应示例

HTTP/1.1 200
Content-Type: application/json
{
  "items": [
    {
      "id": "id-example",
      "name": "示例资源",
      "description": "",
      "status": "ready",
      "projectId": "projectId-example",
      "ownerUserId": "ownerUserId-example",
      "backend": {
        "catalog": "",
        "type": "",
        "id": "id-example"
      },
      "spec": {},
      "createdAt": "2026-09-21T00:00:00Z",
      "updatedAt": "2026-09-21T00:00:00Z"
    }
  ],
  "total": 1,
  "page": 1,
  "page_size": 1
}

状态码与错误码

成功状态码:200。

HTTP error 说明
500 internal_error failed to list routes
401 unauthorized authentication required
400 invalid_request 详细原因由 message 返回。

此外,认证/授权中间件可返回 401 / 403;后端错误与错误封装见调用方式。

创建网关路由

功能介绍

创建网关路由。

访问要求:有效 Token;需要对应资源写权限,并受项目、所有者、公共或共享资源规则限制。

URI

POST /api/v1/routes

请求消息

Content-Type: application/json。

参数 参数类型 是否必选 描述
name string 是 显示名称
description string 否 描述
namespace string 否 Kubernetes 命名空间
models array<route.ModelRoute> 条件必选 使用多模型映射时必选,至少一项;每项须包含 model 和非空 backendRefs。
model string 条件必选 未提供 models、使用单模型兼容格式时必选。
subdomains array 条件必选 使用平台根域名时必选,与完整 hostnames 二选一。
hostnames array 条件必选 直接指定完整域名时必选,与 subdomains 二选一。
backendRefs array<route.BackendRef> 条件必选 未提供 models 时,与顶层 model 一起提供,至少一个有效后端。
ipAllow array 条件必选 启用 IP 白名单时须提供非空有效 CIDR 列表;否则可省略或为空。
ipDeny array 条件必选 启用 IP 黑名单时须提供非空有效 CIDR 列表;否则可省略或为空。
labels map<string, string> 否 标签键值对
参数 参数类型 是否必选 描述
models[].model string 是 对外模型名,不可为空且在该路由内不可重复。
models[].backendRefs array 是 该模型的后端列表,至少一项。
models[].backendRefs[].name string 是 关联服务名称。
models[].backendRefs[].priority integer 是 后端优先级,0 至 100 的整数。
models[].backendRefs[].weight integer 是 后端权重,1 至 100 的整数。
models[].backendRefs[].modelNameOverride string 是 发送给后端的模型名称,不能为空。

嵌套表适用于 models 中的每个映射;单模型兼容格式的 backendRefs 子字段遵循相同约束。IP 白名单和黑名单按所选模式配置。

响应消息

参数 参数类型 描述
id string 资源唯一标识
name string 显示名称
description string 描述
status string 资源状态;具体取值见业务规则
projectId string 所属项目 ID
projectName string 项目名称;空值时可能省略
domainId string 所属部门 ID;空值时可能省略
domainName string 部门名称;空值时可能省略
ownerUserId string 创建者用户 ID
ownerName string 创建者名称;空值时可能省略
backend route.backendRef 后端资源标识
spec route.Spec 资源配置快照
ready string 是否就绪;空值时可能省略
conditions array<route.Condition> 后端状态条件;空值时可能省略
labels map<string, string> 标签键值对;空值时可能省略
createdAt string(date-time) 创建时间,RFC3339
updatedAt string(date-time) 更新时间,RFC3339

请求示例

POST https://{endpoint}/api/v1/routes
x-keystone-token: <Keystone Token>
Content-Type: application/json
{
  "name": "示例路由",
  "models": [
    {
      "model": "demo-model",
      "backendRefs": [
        {
          "name": "prov-backend",
          "priority": 0,
          "weight": 1,
          "modelNameOverride": "backend-model"
        }
      ]
    }
  ],
  "subdomains": [
    "demo"
  ]
}

正常响应示例

HTTP/1.1 201
Content-Type: application/json
{
  "id": "id-example",
  "name": "示例资源",
  "description": "",
  "status": "ready",
  "projectId": "projectId-example",
  "ownerUserId": "ownerUserId-example",
  "backend": {
    "catalog": "",
    "type": "",
    "id": "id-example"
  },
  "spec": {},
  "createdAt": "2026-09-21T00:00:00Z",
  "updatedAt": "2026-09-21T00:00:00Z"
}

状态码与错误码

成功状态码:201。

HTTP error 说明
400 invalid_request malformed JSON body
401 unauthorized missing project-scoped token; re-authenticate with a project scope
403 forbidden write permission required
500 internal_error failed to validate hostnames
409 conflict 详细原因由 message 返回。
404 not_found 详细原因由 message 返回。
422 invalid_request 详细原因由 message 返回。
502 backend_unavailable kubernetes API unavailable

此外,认证/授权中间件可返回 401 / 403;后端错误与错误封装见调用方式。

更新网关路由显示信息

功能介绍

更新网关路由显示信息。

访问要求:有效 Token;需要对应资源写权限,并受项目、所有者、公共或共享资源规则限制。

URI

PATCH /api/v1/routes/{id}
参数 类型 必选 描述
id string 是 目标资源 ID

请求消息

Content-Type: application/json。

参数 参数类型 是否必选 描述
name string / null 否 显示名称
description string / null 否 描述

响应消息

参数 参数类型 描述
id string 资源唯一标识
name string 显示名称
description string 描述
status string 资源状态;具体取值见业务规则
projectId string 所属项目 ID
projectName string 项目名称;空值时可能省略
domainId string 所属部门 ID;空值时可能省略
domainName string 部门名称;空值时可能省略
ownerUserId string 创建者用户 ID
ownerName string 创建者名称;空值时可能省略
backend route.backendRef 后端资源标识
spec route.Spec 资源配置快照
ready string 是否就绪;空值时可能省略
conditions array<route.Condition> 后端状态条件;空值时可能省略
labels map<string, string> 标签键值对;空值时可能省略
createdAt string(date-time) 创建时间,RFC3339
updatedAt string(date-time) 更新时间,RFC3339

请求示例

PATCH https://{endpoint}/api/v1/routes/resource-id
x-keystone-token: <Keystone Token>
Content-Type: application/json
{
  "name": "更新后的名称"
}

正常响应示例

HTTP/1.1 200
Content-Type: application/json
{
  "id": "id-example",
  "name": "示例资源",
  "description": "",
  "status": "ready",
  "projectId": "projectId-example",
  "ownerUserId": "ownerUserId-example",
  "backend": {
    "catalog": "",
    "type": "",
    "id": "id-example"
  },
  "spec": {},
  "createdAt": "2026-09-21T00:00:00Z",
  "updatedAt": "2026-09-21T00:00:00Z"
}

状态码与错误码

成功状态码:200。

HTTP error 说明
400 invalid_request malformed JSON body
403 forbidden write permission required
401 unauthorized authentication required
404 not_found route not found
409 conflict route already exists
500 internal_error internal server error

此外,认证/授权中间件可返回 401 / 403;后端错误与错误封装见调用方式。

获取网关路由详情

功能介绍

获取网关路由详情。

访问要求:有效 Token;需要对应资源读权限,并受项目、所有者、公共或共享资源规则限制。

URI

GET /api/v1/routes/{id}
参数 类型 必选 描述
id string 是 目标资源 ID

请求消息

无请求体。

响应消息

参数 参数类型 描述
id string 资源唯一标识
name string 显示名称
description string 描述
status string 资源状态;具体取值见业务规则
projectId string 所属项目 ID
projectName string 项目名称;空值时可能省略
domainId string 所属部门 ID;空值时可能省略
domainName string 部门名称;空值时可能省略
ownerUserId string 创建者用户 ID
ownerName string 创建者名称;空值时可能省略
backend route.backendRef 后端资源标识
spec route.Spec 资源配置快照
ready string 是否就绪;空值时可能省略
conditions array<route.Condition> 后端状态条件;空值时可能省略
labels map<string, string> 标签键值对;空值时可能省略
createdAt string(date-time) 创建时间,RFC3339
updatedAt string(date-time) 更新时间,RFC3339

请求示例

GET https://{endpoint}/api/v1/routes/resource-id
x-keystone-token: <Keystone Token>

正常响应示例

HTTP/1.1 200
Content-Type: application/json
{
  "id": "id-example",
  "name": "示例资源",
  "description": "",
  "status": "ready",
  "projectId": "projectId-example",
  "ownerUserId": "ownerUserId-example",
  "backend": {
    "catalog": "",
    "type": "",
    "id": "id-example"
  },
  "spec": {},
  "createdAt": "2026-09-21T00:00:00Z",
  "updatedAt": "2026-09-21T00:00:00Z"
}

状态码与错误码

成功状态码:200。

HTTP error 说明
401 unauthorized authentication required
404 not_found route not found
409 conflict route already exists
500 internal_error internal server error

此外,认证/授权中间件可返回 401 / 403;后端错误与错误封装见调用方式。

替换网关路由配置

功能介绍

替换网关路由配置。

访问要求:有效 Token;需要对应资源写权限,并受项目、所有者、公共或共享资源规则限制。

URI

PUT /api/v1/routes/{id}
参数 类型 必选 描述
id string 是 目标资源 ID

请求消息

Content-Type: application/json。

参数 参数类型 是否必选 描述
name string 是 显示名称
description string 否 描述
namespace string 否 Kubernetes 命名空间
models array<route.ModelRoute> 条件必选 使用多模型映射时必选,至少一项;每项须包含 model 和非空 backendRefs。
model string 条件必选 未提供 models、使用单模型兼容格式时必选。
subdomains array 条件必选 使用平台根域名时必选,与完整 hostnames 二选一。
hostnames array 条件必选 直接指定完整域名时必选,与 subdomains 二选一。
backendRefs array<route.BackendRef> 条件必选 未提供 models 时,与顶层 model 一起提供,至少一个有效后端。
ipAllow array 条件必选 启用 IP 白名单时须提供非空有效 CIDR 列表;否则可省略或为空。
ipDeny array 条件必选 启用 IP 黑名单时须提供非空有效 CIDR 列表;否则可省略或为空。
labels map<string, string> 否 标签键值对

使用完整路由配置替换模型映射等配置;不是局部 PATCH。

参数 参数类型 是否必选 描述
models[].model string 是 对外模型名,不可为空且在该路由内不可重复。
models[].backendRefs array 是 该模型的后端列表,至少一项。
models[].backendRefs[].name string 是 关联服务名称。
models[].backendRefs[].priority integer 是 后端优先级,0 至 100 的整数。
models[].backendRefs[].weight integer 是 后端权重,1 至 100 的整数。
models[].backendRefs[].modelNameOverride string 是 发送给后端的模型名称,不能为空。

嵌套表适用于 models 中的每个映射;单模型兼容格式的 backendRefs 子字段遵循相同约束。IP 白名单和黑名单按所选模式配置。

响应消息

参数 参数类型 描述
id string 资源唯一标识
name string 显示名称
description string 描述
status string 资源状态;具体取值见业务规则
projectId string 所属项目 ID
projectName string 项目名称;空值时可能省略
domainId string 所属部门 ID;空值时可能省略
domainName string 部门名称;空值时可能省略
ownerUserId string 创建者用户 ID
ownerName string 创建者名称;空值时可能省略
backend route.backendRef 后端资源标识
spec route.Spec 资源配置快照
ready string 是否就绪;空值时可能省略
conditions array<route.Condition> 后端状态条件;空值时可能省略
labels map<string, string> 标签键值对;空值时可能省略
createdAt string(date-time) 创建时间,RFC3339
updatedAt string(date-time) 更新时间,RFC3339

请求示例

PUT https://{endpoint}/api/v1/routes/resource-id
x-keystone-token: <Keystone Token>
Content-Type: application/json
{
  "name": "示例路由",
  "models": [
    {
      "model": "demo-model",
      "backendRefs": [
        {
          "name": "prov-backend",
          "priority": 0,
          "weight": 1,
          "modelNameOverride": "backend-model"
        }
      ]
    }
  ],
  "subdomains": [
    "demo"
  ]
}

正常响应示例

HTTP/1.1 200
Content-Type: application/json
{
  "id": "id-example",
  "name": "示例资源",
  "description": "",
  "status": "ready",
  "projectId": "projectId-example",
  "ownerUserId": "ownerUserId-example",
  "backend": {
    "catalog": "",
    "type": "",
    "id": "id-example"
  },
  "spec": {},
  "createdAt": "2026-09-21T00:00:00Z",
  "updatedAt": "2026-09-21T00:00:00Z"
}

状态码与错误码

成功状态码:200。

HTTP error 说明
400 invalid_request malformed JSON body
500 internal_error route has no k8s backend id
401 unauthorized missing project-scoped token; re-authenticate with a project scope
403 forbidden write permission required
404 not_found route not found
409 conflict route already exists
422 invalid_request 详细原因由 message 返回。
502 backend_unavailable kubernetes API unavailable

此外,认证/授权中间件可返回 401 / 403;后端错误与错误封装见调用方式。

删除网关路由

功能介绍

删除网关路由。

访问要求:有效 Token;需要对应资源写权限,并受项目、所有者、公共或共享资源规则限制。

URI

DELETE /api/v1/routes/{id}
参数 类型 必选 描述
id string 是 目标资源 ID

请求消息

无请求体。

响应消息

成功返回 204 No Content,无响应体。

请求示例

DELETE https://{endpoint}/api/v1/routes/resource-id
x-keystone-token: <Keystone Token>

正常响应示例

HTTP/1.1 204 No Content

状态码与错误码

成功状态码:204。

HTTP error 说明
401 unauthorized missing project-scoped token; re-authenticate with a project scope
403 forbidden write permission required
404 not_found route not found
409 conflict route already exists
500 internal_error internal server error
422 invalid_request 详细原因由 message 返回。
502 backend_unavailable kubernetes API unavailable

此外,认证/授权中间件可返回 401 / 403;后端错误与错误封装见调用方式。

查询可选路由后端

功能介绍

查询可选路由后端。

访问要求:有效 Token;需要对应资源读权限,并受项目、所有者、公共或共享资源规则限制。

URI

GET /api/v1/service-backends

请求消息

无请求体。

响应消息

参数 参数类型 描述
items array<route.backendView> 结果列表

请求示例

GET https://{endpoint}/api/v1/service-backends
x-keystone-token: <Keystone Token>

正常响应示例

HTTP/1.1 200
Content-Type: application/json
{
  "items": [
    {
      "name": "示例资源",
      "displayName": "",
      "namespace": "",
      "kind": ""
    }
  ]
}

状态码与错误码

成功状态码:200。

HTTP error 说明
401 unauthorized authentication required
400 invalid_request 详细原因由 message 返回。
403 forbidden 详细原因由 message 返回。
404 not_found 详细原因由 message 返回。
409 conflict a route with that name already exists in the namespace
422 invalid_request 详细原因由 message 返回。
502 backend_unavailable kubernetes API unavailable
500 internal_error failed to provision route

此外,认证/授权中间件可返回 401 / 403;后端错误与错误封装见调用方式。

查询路由筛选项

功能介绍

查询路由筛选项。

访问要求:有效 Token;需要对应资源读权限,并受项目、所有者、公共或共享资源规则限制。

URI

GET /api/v1/routes/filter-options

请求消息

无请求体。

响应消息

参数 参数类型 描述
backends array<route.filterOption> 后端筛选项
domains array<route.filterOption> 部门筛选项
projects array<route.filterOption> 项目筛选项

请求示例

GET https://{endpoint}/api/v1/routes/filter-options
x-keystone-token: <Keystone Token>

正常响应示例

HTTP/1.1 200
Content-Type: application/json
{
  "backends": [
    {
      "value": "",
      "label": ""
    }
  ],
  "domains": [
    {
      "value": "",
      "label": ""
    }
  ],
  "projects": [
    {
      "value": "",
      "label": ""
    }
  ]
}

状态码与错误码

成功状态码:200。

HTTP error 说明
401 unauthorized authentication required

此外,认证/授权中间件可返回 401 / 403;后端错误与错误封装见调用方式。

此篇文章对你是否有帮助?
没帮助
locked-file

您暂无权限访问该产品