星座运势 API 导入 Postman / Swagger UI:OpenAPI 3.0 文档的用法

约 13 分钟 进阶星座运势APIOpenAPIPostmanSwaggerUI
# 星座运势 API 导入 Postman / Swagger UI:OpenAPI 3.0 文档的用法 接口 872(两接入点)· 免费服务 · 适用:注重接口治理与团队协作的开发者 · 阅读时间:约 6 分钟 · 最后实测核对:2026-09-18 ## 核心要点 - 星座运势接口(apiCode=872)提供标准 OpenAPI 3.0.3 文档,同时覆盖接入点 1 与接入点 2。 - 文档地址有两份:`https://www.showapi.com/openapi/market/872.yaml` 与 `https://www.showapi.com/openapi/market/872.json`。 - 接入点级扩展字段里带超时配置,2026-09-18 读取到的值是接入点 1 为 15 秒 / 15 秒,接入点 2 为 5 秒 / 5 秒,接口详情页不展示这两个值。 ## 文档资源 | 资源 | 链接 | |---|---| | OpenAPI 3.0(YAML) | `https://www.showapi.com/openapi/market/872.yaml` | | OpenAPI 3.0(JSON) | `https://www.showapi.com/openapi/market/872.json` | | 接口详情页 | `https://www.showapi.com/apiGateway/view/872` | 文档头部的实测值:`openapi` 为 `3.0.3`,`info.title` 为「星座运势」,`info.version` 为 `1.0.0`,`servers` 指向 `https://route.showapi.com`。 ## 接入点与扩展字段 `paths` 下有两个路径,与接口的接入点一一对应: | 路径 | 接入点 | `x-pointCode` | `x-mode` | `x-read-timeout` / `x-connect-timeout` | |---|---|---|---|---| | `/872-1` | 星座运势查询 | `1` | `mapping` | `15` / `15` | | `/872-2` | 星座配对 | `2` | `mapping` | `5` / `5` | `x-read-timeout` 与 `x-connect-timeout` 是接口文档页看不到的两个值,写客户端超时配置时按这两个数设置。接入点 2 的超时比接入点 1 短,两个请求不要共用一个 15 秒的超时。 两个路径都只声明了 `post`,请求体用 `application/x-www-form-urlencoded`。`appKey` 以 `in: query` 的形式定义在文档参数里。 ## 导入 Postman 1. 打开 Postman,选择 Import。 2. 选 Link 方式,粘贴 `https://www.showapi.com/openapi/market/872.yaml`。 3. 导入后会生成一个 Collection,里面是 `872-1` 与 `872-2` 两个请求。 4. 在请求的 `appKey` 参数里填入你的 AppKey,或者建一个环境变量 `appKey` 并在请求中引用。 两个请求的默认参数集来自文档,`star`、`date`、`needX` 这类可选参数可以直接在 Params 面板里勾选启用。 ## 导入 Swagger UI / Swagger Editor 把 YAML 内容贴进 Swagger Editor,右侧会渲染出可交互的接口列表,点开任一接入点就能填参数并发送请求。适合给团队做接口速查,不需要装客户端。 ## 用文档生成代码前的准备 OpenAPI 文档可以喂给 openapi-generator 之类的工具生成客户端骨架,生成后需要补三件事: - 把 `appKey` 从 query 参数改为环境变量注入,不要硬编码在生成的客户端里。 - 超时按接入点分别设置,接入点 2 用 5 秒。 - 业务层的 `ret_code` 判断要自己加。文档描述的 `ret_code` 标注为 String,2026-09-18 实测返回的是数字 `0`,生成代码里统一按字符串化比较。 Python 里用 requests 直接按文档结构调用: ```python import requests def call(path: str, params: dict, timeout: int) -> dict: """path 取 872-1 / 872-2,timeout 按 OpenAPI 的 x-read-timeout 传入。""" data = requests.post( f"https://route.showapi.com/{path}", data={**params, "appKey": "YOUR_APPKEY"}, # 文档定义 appKey 在 query,表单同样生效 timeout=timeout, ).json() if data.get("showapi_res_code") != 0: raise RuntimeError(f"系统错误: {data.get('showapi_res_error')}") body = data["showapi_res_body"] if str(body.get("ret_code")) != "0": raise RuntimeError(f"业务错误: {body.get('remark')}") return body # 接入点 1,超时按 x-read-timeout = 15 print(call("872-1", {"star": "shizi", "needWeek": "1"}, 15)["day"]["summary_star"]) # 接入点 2,超时按 x-read-timeout = 5 print(call("872-2", {"star1": "tianxie", "gender1": "1", "star2": "shuiping", "gender2": "0"}, 5)["match"]) ``` cURL(GET 形式同样可用): ```bash # 接入点 1:15 秒 curl -G "https://route.showapi.com/872-1" \ --data-urlencode "appKey=YOUR_APPKEY" \ --data-urlencode "star=shizi" \ --max-time 15 # 接入点 2:5 秒 curl -G "https://route.showapi.com/872-2" \ --data-urlencode "appKey=YOUR_APPKEY" \ --data-urlencode "star1=tianxie" \ --data-urlencode "gender1=1" \ --data-urlencode "star2=shuiping" \ --data-urlencode "gender2=0" \ --max-time 5 ``` Node.js(fetch): ```javascript async function call(path, params, timeoutMs) { const url = new URL(`https://route.showapi.com/${path}`); url.searchParams.set("appKey", "YOUR_APPKEY"); Object.entries(params).forEach(([k, v]) => url.searchParams.set(k, v)); const res = await fetch(url, { signal: AbortSignal.timeout(timeoutMs) }); const data = await res.json(); if (String(data.showapi_res_body?.ret_code) !== "0") throw new Error("业务失败"); return data.showapi_res_body; } console.log(await call("872-1", { star: "shizi" }, 15000)); console.log(await call("872-2", { star1: "tianxie", gender1: "1", star2: "shuiping", gender2: "0" }, 5000)); ``` ## 文档与实测的差异 读文档时有三处需要按实测理解,2026-09-18 核对如下: | 项 | 文档口径 | 实测 | |---|---|---| | `day` / `tomorrow` / `week` / `month` / `year` | `Object[]` | 单个对象 | | `ret_code` | 参数表标注 String | 数字 `0` | | `month` 的字段表 | 未列 `lucky_num`、`lucky_color`、`day_notice` | 三个字段都有返回 | 这几个差异不影响导入流程,写解析代码时按实测处理即可。字段逐个说明见返回字段全解那篇。 ## 与 MCP 的取舍 需要 AI 客户端在对话里直接调用,用 MCP 服务;需要接口测试、Mock、代码生成、团队协作,用 OpenAPI 文档。两者不冲突,可以同时配。 ## FAQ **Q1:导入后只有两个请求,接入点是不是少列了?** 没有少。接口 872 共 2 个接入点,对应文档里的 `/872-1` 与 `/872-2`,与接口详情页侧栏一致。 **Q2:超时该设多少?** 按文档的接入点级扩展字段设置。2026-09-18 读取到接入点 1 为读 15 秒 / 连接 15 秒,接入点 2 为读 5 秒 / 连接 5 秒。 **Q3:OpenAPI 里为什么只有 `post`?** 文档只声明了 `post`,请求体为 `application/x-www-form-urlencoded`。接口详情页标注请求方式为 POST / GET,GET 形式在调用时同样可用。 **Q4:能生成多语言 SDK 吗?** 可以。把 YAML 交给 openapi-generator 一类的工具即可,生成后记得按上面三件事做调整:密钥走环境变量、超时按接入点分开、业务层 `ret_code` 自己判。 **Q5:文档和实测不一致时按哪个写代码?** 按实测写。三处已知差异已在上面列出,解析代码统一按实测的形态处理。 **Q6:`appKey` 在文档里是 query 参数吗?** 是。`in: query`,实际调用时放在 URL 查询串或表单参数里都可以。 ## 下一步阅读 - [星座运势 API 接进 Cherry Studio / ChatBox:MCP 配置](https://www.showapi.com/guides/horoscope-mcp-872) - [星座运势查询:用 Python / cURL / Node.js 跑通第一次调用](https://www.showapi.com/guides/horoscope-quickstart-872) - [星座配对:用四个必填参数算出配对指数](https://www.showapi.com/guides/constellation-match-quickstart-872) - [星座运势查询返回字段全解:五个周期的字段对照](https://www.showapi.com/guides/horoscope-response-fields-872) - **本系列共 13 篇**:查看[星座运势 API 指南总目录](https://www.showapi.com/guides/horoscope-guides-872)
加载中...