Summary
当需要通过 `bk-cli api` 对任意 BlueKing API Gateway 发起原始 HTTP 调用时使用,尤其适合现有系统子命令还没覆盖、需要精确复现某个 URL/query/path/body/header、先做 dry-run 验证请求构造,或直接调试请求输入与响应包络时。只要用户明确在做“原始…
tencentblueking/bk-cli · Archived
当需要通过 `bk-cli api` 对任意 BlueKing API Gateway 发起原始 HTTP 调用时使用,尤?
npx skills add tencentblueking/bk-cli --skill bk-cli-api
当需要通过 `bk-cli api` 对任意 BlueKing API Gateway 发起原始 HTTP 调用时使用,尤其适合现有系统子命令还没覆盖、需要精确复现某个 URL/query/path/body/header、先做 dry-run 验证请求构造,或直接调试请求输入与响应包络时。只要用户明确在做“原始…
This repository is archived — consider an actively maintained alternative.
当任务涉及 bk-cli 的通用使用规则时使用,尤?
7 installs当需要通过 `bk-cli bcs` 调用 BCS API 时使用;当前主要覆盖 `bk-cli bcs cluster_manager` 下的集群…
7 installs当需要通过 `bk-cli apigateway` 发现 BlueKing API Gateway 中所有?
7 installs当需要通过 `bk-cli sops` 使用标准运维相?
6 installsOther skills from tencentblueking/bk-cli · top by installs.
npx skills add tencentblueking/bk-cli
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
master
Files included with this skill beyond the listing page.
SKILL.md
7,616 B
SUMMARY.md
413 B
直接对任意 BlueKing API Gateway 网关发起 HTTP 请求。
CRITICAL — 开始前 MUST 先用 Read 工具读取 ../bk-cli-shared/SKILL.md。那里定义了认证、context、stage、timeout、header、body、tenant、dry-run 和 verbose 的共享规则;本 skill 只补充 bk-cli api 独有的原始请求构造细节。
gateway_name、HTTP 方法和路径,希望直接发请求。bk-cli 调试或调用。bk-cli-apigateway 做发现和 Schema 浏览。bk-cli-shared。bk-cli-shared 确认 context、认证和 stage 这些全局前提。api_path 时,优先直接写值;只有在模板路径更清晰时才使用 --path。--dry-run,确认 URL、headers、body 都正确后再实际发送。--verbose;脚本消费 stdout 时只解析 JSON envelope。bk-cli api <gateway_name> <method> <api_path> [flags]
| 位置参数 | 说明 |
|---|---|
gateway_name |
网关名,例如 bk-apigateway、bk-iam;必须匹配 ^[a-z][a-z0-9-]{2,29}$ |
method |
HTTP 方法:GET、POST、PUT、PATCH、DELETE |
api_path |
API 路径,推荐直接写入值;也支持使用 {placeholder} 模板 |
| Flag | 类型 | 说明 |
|---|---|---|
--query |
JSON 字符串 | 追加到 URL 的查询参数 |
--path |
JSON 字符串 | 用于替换 api_path 中 {placeholder} 的值 |
--body |
JSON 字符串 | JSON 请求体,会自动设置 Content-Type: application/json |
--header |
可重复 | 自定义请求头,格式为 Key:Value,可重复传入 |
--stage |
string | 网关 stage:prod(默认)或 testing |
--timeout |
duration | 覆盖当前请求超时,例如 180s;默认使用 context 中的 timeout(默认 60s) |
--dry-run |
bool | 仅预览请求,不实际执行 |
--context |
string | 覆盖当前激活的 context |
--verbose |
bool | 将请求/响应详情打印到 stderr |
--insecure |
bool | 跳过 HTTPS 证书校验,仅用于临时调试 |
# 简单 GET
bk-cli api bk-apigateway GET /api/v2/open/gateways/
# 带查询参数的 GET
bk-cli api bk-apigateway GET /api/v2/open/gateways/ \
--query '{"name":"bk-iam","fuzzy":true}'
# 直接在路径中渲染值的 GET(推荐给 agent)
bk-cli api bk-apigateway GET /api/v2/open/gateways/bk-iam/resources/
# 通过 --path 做路径模板替换
bk-cli api bk-apigateway GET /api/v2/open/gateways/{gateway_name}/resources/ \
--path '{"gateway_name":"bk-iam"}'
# 带请求体的 POST
bk-cli api bk-demo POST /api/v2/foo/ --body '{"name":"bar"}'
# 自定义请求头
bk-cli api bk-demo GET /api/v2/foo/ --header "X-Custom:value"
# 特殊场景下显式覆盖 auth / tenant header
bk-cli api bk-demo GET /api/v2/foo/ \
--header 'X-Bkapi-Authorization:{"access_token":"custom-token"}' \
--header 'X-Bk-Tenant-Id:tenant-b'
# 仅预览,不执行
bk-cli api bk-demo GET /api/v2/foo/ --dry-run
# 使用 testing stage
bk-cli api bk-demo GET /api/v2/foo/ --stage testing
# 单次请求覆盖超时
bk-cli api bk-demo GET /api/v2/foo/ --timeout 180s
bk-cli api 支持 --timeout <duration> 单次覆盖 context timeout;完整优先级见 ../bk-cli-shared/SKILL.md。
最终 URL 按四步构造:
gatewayname 渲染 bkapiurltmpl,得到基础 URL/{stage},默认是 prod--path 替换 api_path 中的占位符api_pathbk_api_url_tmpl = "https://bkapi.example.com/api/{gateway_name}/"
gateway_name = bk-iam
stage = prod
api_path = /api/v2/systems/
→ https://bkapi.example.com/api/bk-iam/prod/api/v2/systems/
推荐做法: 如果可以,直接把值写进 api_path,不要额外依赖 --path。
# ✅ 推荐:直接在路径里写值
bk-cli api bk-apigateway GET /api/v2/open/gateways/bk-iam/resources/
# 也支持:通过 --path 做模板替换
bk-cli api bk-apigateway GET /api/v2/open/gateways/{gateway_name}/resources/ \
--path '{"gateway_name":"bk-iam"}'
校验规则:
api_path 中有未解析的 {placeholder} 且未提供 --path,会在本地报错--path JSON 缺少某个占位符对应的 key,会在本地报错--path 包含多余 key,且不匹配任何占位符,会在本地报错--path 不是合法 JSON,会在本地报错gateway_name 时,其值必须匹配 ^[a-z][a-z0-9-]{2,29}$Content-Type 与脱敏规则见 ../bk-cli-shared/SKILL.md{"ok": true, "status": 200, "headers": {"X-Request-Id": "..."}, "data": {...}}
{"ok": false, "status": 400, "headers": {...}, "data": {...}}
{"ok": false, "error": {"code": "auth_required", "message": "...", "hint": "Run: bk-cli auth login"}}
{"ok": true, "dry_run": true, "request": {"method": "GET", "url": "...", "headers": {...}, "params": {...}, "body": null}}
# 提取 data
bk-cli api bk-apigateway GET /api/v2/open/gateways/ | jq '.data'
# 检查是否成功
bk-cli api bk-apigateway GET /api/v2/open/gateways/ | jq '.ok'
# 获取 HTTP 状态码
bk-cli api bk-apigateway GET /api/v2/open/gateways/ | jq '.status'
脚本默认读 stdout 中的 JSON envelope;排障时如果还要看请求细节,再结合 stderr 中的 verbose 输出一起看。
| 错误码 | 原因 | 修复方式 |
|---|---|---|
config_error |
尚未配置 context | bk-cli context init --bkapiurl_tmpl=... |
auth_required |
当前 context 没有凭据 | bk-cli auth login |
invalidgatewayname |
gateway_name 输入不合法 |
使用匹配 ^[a-z][a-z0-9-]{2,29}$ 的网关名 |
path_error |
占位符未解析,或 --path JSON 非法 |
检查 api_path 占位符和 --path 的值 |
request_error |
--query、--body 或 --header 输入非法 |
检查 JSON 或 header 格式 |
network_error |
请求发送失败 | 检查网络连通性和 VPN |