一、Kong API 列表加 curl 访问案例
为了方便你管理和配置 Kong,我为你整理了一份核心 Kong Admin API 列表 ,并为每个接口配备了实用的 curl 访问案例。
这些 API 默认通过 8001 端口进行管理(http://:8001)[[source_group_web_1]]。
- Service (服务) 管理
Service 代表你的上游应用(如 Nacos、订单服务等)。
| 功能 | Curl 命令案例 | 说明 |
|---|---|---|
| 创建 Service | curl -X POST http://localhost:8001/services \\<br/>--data "name=nacos" \\<br/>--data "url=http://192.168.1.50:8848" |
创建名为 nacos 的服务,指向内网 IPsource_group_web_2。 |
| 查询所有 Services | curl -X GET http://localhost:8001/services |
列出所有已注册的服务。 |
| 查询特定 Service | curl -X GET http://localhost:8001/services/nacos |
根据名称查询。 |
| 更新 Service | curl -X PATCH http://localhost:8001/services/nacos \\<br/>--data "retries=3" |
修改重试次数等参数。 |
| 删除 Service | curl -X DELETE http://localhost:8001/services/nacos |
删除服务(关联路由通常也会被删除)。 |
- Route (路由) 管理
Route 定义了如何将客户端请求转发给 Service。
| 功能 | Curl 命令案例 | 说明 |
|---|---|---|
| 创建 Route | curl -X POST http://localhost:8001/services/nacos/routes \\<br/>--data "paths[]=/nacos" \\<br/>--data "strip_path=true" |
将 /nacos 路径的请求转发给 nacos 服务source_group_web_3。 |
| 查询所有 Routes | curl -X GET http://localhost:8001/routes |
查看所有路由规则。 |
| 通过 Host 匹配 | curl -X POST http://localhost:8001/services/nacos/routes \\<br/>--data "hosts[]=api.example.com" |
配置基于域名的访问。 |
| 删除 Route | curl -X DELETE http://localhost:8001/routes/{route-id} |
根据 Route 的 ID 删除。 |
- Upstream & Target (负载均衡)
用于配置多个节点的负载均衡(如 Nacos 集群)。
| 功能 | Curl 命令案例 | 说明 |
|---|---|---|
| 创建 Upstream | curl -X POST http://localhost:8001/upstreams \\<br/>--data "name=nacos-cluster" \\<br/>--data "algorithm=round-robin" |
创建一个名为 nacos-cluster 的上游组source_group_web_4。 |
| 添加 Target 节点 | curl -X POST http://localhost:8001/upstreams/nacos-cluster/targets \\<br/>--data "target=192.168.1.50:8848" \\<br/>--data "weight=100" |
为上游组添加一个真实节点source_group_web_5。 |
| 查看节点状态 | curl -X GET http://localhost:8001/upstreams/nacos-cluster/targets |
查看集群中节点的健康状态。 |
- Plugin (插件) 管理
用于开启鉴权、限流等功能。
| 功能 | Curl 命令案例 | 说明 |
|---|---|---|
| 开启 Key 鉴权 | curl -X POST http://localhost:8001/services/nacos/plugins \\<br/>--data "name=key-auth" |
为 Nacos 服务开启 Key 认证。 |
| 开启限流 | curl -X POST http://localhost:8001/plugins \\<br/>--data "name=rate-limiting" \\<br/>--data "config.minute=10" |
全局限流,每分钟最多 10 次请求source_group_web_6。 |
| 查看插件 | curl -X GET http://localhost:8001/plugins |
列出当前生效的所有插件。 |
- Consumer (消费者) 管理
配合鉴权插件使用,代表调用 API 的用户或应用。
| 功能 | Curl 命令案例 | 说明 |
|---|---|---|
| 创建用户 | curl -X POST http://localhost:8001/consumers \\<br/>--data "username=my-app" |
创建一个名为 my-app 的消费者source_group_web_7。 |
| 生成 API Key | curl -X POST http://localhost:8001/consumers/my-app/key-auth \\<br/>--data "key=abc123xyz" |
为用户生成具体的 Keysource_group_web_8。 |
- 状态与信息
| 功能 | Curl 命令案例 | 说明 |
|---|---|---|
| 查看 Kong 状态 | curl -X GET http://localhost:8001/status |
查看 Kong 版本、数据库连接状态等source_group_web_9。 |
| 查看所有配置 | curl -X GET http://localhost:8001 |
返回节点的基本信息。 |
💡 使用小贴士
- 端口区分:8000 是对外提供服务的端口(客户端访问),8001 是管理端口(执行上述 curl 命令)[[source_group_web_10]]。
- JSON 格式:部分复杂配置建议使用 --header 'Content-Type: application/json' 并配合 -d '{json}' 传参。
- ID 的使用:在查询或删除时,如果提示找不到名称,通常是因为 Kong 自动生成了 ID,建议先查列表获取确切的 id 或 name。
二、通过 curl 修改 router 的 method
通过 curl 修改 Kong 路由(Router/Route)的请求方法(Methods),主要使用 PATCH 请求来更新路由配置。
以下是具体的操作步骤和命令示例:
- 核心命令:修改 Methods
假设你要修改的路由 ID 是 route-id-123,或者你可以通过名称引用(如果支持)。
curl -X PATCH http://localhost:8001/routes/ \
--data "methods[]=GET" \
--data "methods[]=POST" \
--data "methods[]=PUT"
- :替换为你的路由实际的 ID 或名称。
- methods[]:后面跟上你允许的 HTTP 方法。注意: 这里的配置是覆盖原有配置,而不是追加。
- 操作步骤详解
为了确保准确,建议按以下流程操作:
步骤 1:查找路由 ID 或名称
如果你不确定路由的 ID,先查询列表:
查询所有路由
curl -X GET http://localhost:8001/routes
或者根据服务查询(假设服务名为 nacos)
curl -X GET http://localhost:8001/services/nacos/routes
在返回的 JSON 结果中,找到对应的 id 或 name。
步骤 2:执行修改
假设你的路由 ID 是 abc-def-ghi,现在只允许 GET 和 POST 请求:
curl -X PATCH http://localhost:8001/routes/abc-def-ghi \
--data "methods[]=GET" \
--data "methods[]=POST"
步骤 3:验证修改
再次获取路由详情,检查 methods 字段是否已更新:
curl -X GET http://localhost:8001/routes/abc-def-ghi
- 常见场景示例
-
场景 A:只允许 GET 请求
curl -X PATCH http://localhost:8001/routes/your-route-id --data "methods[]=GET" -
场景 B:允许所有常见方法
curl -X PATCH http://localhost:8001/routes/your-route-id \ --data "methods[]=GET" \ --data "methods[]=POST" \ --data "methods[]=PUT" \ --data "methods[]=DELETE" \ --data "methods[]=PATCH" \ --data "methods[]=HEAD"
⚠️ 注意事项
- 覆盖逻辑 :使用 PATCH 设置 methods 时,新传入的列表会完全替换旧的列表。例如,原先是 [GET, POST],如果你只传入 [PUT],那么最终结果只有 PUT,GET 和 POST 会被移除。
- 删除 Methods 限制:如果你想取消 Methods 的限制(即允许所有方法),可以将其设置为空(不传 methods 参数)或者在某些版本中传 null,但通常 Kong 默认不限定 Methods。如果之前设定了 Methods,现在想取消限定,建议删除该路由并重新创建一个不带 Methods 限制的路由。
- 大小写:Methods 通常建议大写(GET, POST),虽然 Kong 可能不区分大小写,但为了规范,建议统一大写。