星座运势查询返回字段全解:五个周期的字段对照与实测类型

约 16 分钟 进阶星座运势查询返回字段五周期字段全解
# 星座运势查询返回字段全解:五个周期的字段对照与实测类型 接入点 872-1 · 免费服务 · POST / GET · 返回 JSON · 适用:已接入开发者、需要统一渲染模板的工程师 · 阅读时间:约 7 分钟 · 最后实测核对:2026-09-18 ## 核心要点 - `showapi_res_body` 里最多同时存在五个周期对象:`day`、`tomorrow`、`week`、`month`、`year`,打开哪个 `needX` 开关就出现哪个。 - 日、明日、周、月四个周期的指数是 5 分制,字段类型实测都是数字;`year` 换成 100 分制,四个 `*_index` 实测是带「分」字的字符串。 - 五个周期的字段并不一致:`week` 有小人星座与本周提醒,`month` 有缘份星座与本月优势弱势,`year` 只有指数加上四段长文。 ## 为什么要把字段拉平看一遍 做统一渲染模板时最容易出现的情况是:今日卡片能跑通,切到本周就缺字段,切到本年又被 100 分制的数字撑爆。五个周期对象的字段集合互有增删,先拉一张对照表,后面写模板和落库都省事。 这篇把 2026-09-18 实测到的字段全集、字段类型和空值情况整理成速查表,作为本系列其他文章的字段基准。 ## 接口速览 | 项 | 值 | |---|---| | 接口地址 | `https://route.showapi.com/872-1?appKey={your_appKey}` | | 业务根字段 | `day` / `tomorrow` / `week` / `month` / `year` / `star` / `ret_code` | | 取周期的方式 | 传 `needTomorrow=1`、`needWeek=1`、`needMonth=1`、`needYear=1` | | 超时 | 读 15 秒 / 连接 15 秒 | ## 实测字段数一览 在 `star=shizi` 且四个开关全部打开的情况下,2026-09-18 实测各周期返回的字段个数: | 周期 | 对象还是数组 | 字段数 | 指数字段 | 指数类型 | |---|---|---|---|---| | `day` | 对象 | 15 | `summary_star`、`love_star`、`money_star`、`work_star` | 数字 | | `tomorrow` | 对象 | 15 | 同上 | 数字 | | `week` | 对象 | 17 | 同上 | 数字 | | `month` | 对象 | 18 | 同上 | 数字 | | `year` | 对象 | 11 | `general_index`、`love_index`、`money_index`、`work_index` | 字符串带「分」 | 五个周期在接口文档里都标为 `Object[]`,实测返回的是单个对象。 ## 逐周期字段说明 ### day(今日)与 tomorrow(明日) 两个周期的字段集合完全相同,共 15 个: `summary_star`(综合指数)、`love_star`(爱情)、`money_star`(财富)、`work_star`(工作)、`grxz`(贵人星座)、`lucky_num`(幸运数字)、`lucky_time`(吉时)、`lucky_direction`(吉利方位)、`lucky_color`(吉色)、`day_notice`(今日提醒)、`general_txt`(简评)、`love_txt`、`work_txt`、`money_txt`、`time`。 ### week(本周) 在 `day` 的字段基础上减掉 `lucky_time` 和 `lucky_direction`,加上 `lucky_day`(幸运日期)、`xrxz`(小人星座)、`week_notice`(本周提醒)、`health_txt`(健康运势),共 17 个。 接口文档的 `week` 字段表列了 `lucky_direction`、没有列 `day_notice`;实测 `week` 不含 `lucky_direction`,但保留了 `day_notice`。 ### month(本月) 在 `day` 的字段基础上减掉 `lucky_time`,加上 `yfxz`(缘份星座)、`xrxz`(小人星座)、`month_advantage`(本月优势)、`month_weakness`(本月弱势),共 18 个。 接口文档的 `month` 字段表没有列 `lucky_num`、`lucky_color`、`day_notice`,2026-09-18 实测这三个字段都有返回。 ### year(本年) 字段最少,共 11 个:`general_index`、`love_index`、`money_index`、`work_index` 四个 100 分制指数,加 `oneword`(一句话简评)、`general_txt`(运势概述)、`love_txt`、`work_txt`、`money_txt`、`health_txt`、`time`。 `year` 没有 5 分制的小维度,做 UI 时不要照搬日维度的模板。 ## 返回示例(2026-09-18 真实返回,长文案已截断) ```json { "showapi_res_code": 0, "showapi_res_body": { "day": { "summary_star": 4, "love_star": 3, "money_star": 4, "work_star": 5, "grxz": "狮子座", "lucky_num": "54", "lucky_time": "06:00-08:00", "lucky_direction": "东南方", "lucky_color": "金色", "day_notice": "保持耐心,稳步前行。", "time": "20260918" }, "week": { "summary_star": 4, "love_star": 4, "money_star": 3, "work_star": 5, "grxz": "狮子座", "xrxz": "天蝎座", "lucky_num": "81", "lucky_day": "星期三", "lucky_color": "橙色", "week_notice": "专注细节,把握财运,稳步前行。", "time": "20260913-20260920" }, "month": { "summary_star": 4, "love_star": 4, "money_star": 4, "work_star": 3, "grxz": "狮子座", "xrxz": "金牛座", "yfxz": "射手座", "lucky_num": "17", "lucky_color": "橙色", "lucky_direction": "正南方", "time": "202609" }, "year": { "general_index": "77分", "love_index": "77分", "money_index": "75分", "work_index": "79分", "time": "2026" }, "star": "shizi", "ret_code": 0 } } ``` `time` 字段的格式随周期变化,落库时别统一按日期解析: | 周期 | 实测 `time` 值 | 格式 | |---|---|---| | `day` | `20260918` | `yyyyMMdd` | | `tomorrow` | `20260919` | `yyyyMMdd` | | `week` | `20260913-20260920` | 起止区间 | | `month` | `202609` | `yyyyMM` | | `year` | `2026` | `yyyy` | ## 取数与判空的写法 Python: ```python import requests PERIODS = ["day", "tomorrow", "week", "month", "year"] def fetch_all(star: str, appkey: str) -> dict: params = { "appKey": appkey, "star": star, "needTomorrow": "1", "needWeek": "1", "needMonth": "1", "needYear": "1", } data = requests.get("https://route.showapi.com/872-1", params=params, timeout=15).json() if data.get("showapi_res_code") != 0: raise RuntimeError(data.get("showapi_res_error")) body = data["showapi_res_body"] if str(body.get("ret_code")) != "0": raise RuntimeError(f"业务错误 ret_code={body.get('ret_code')}") # 每个周期都判空:未打开的开关不会返回对应键 return {p: body.get(p) for p in PERIODS if body.get(p)} print(list(fetch_all("shizi", "YOUR_APPKEY").keys())) ``` cURL: ```bash curl -G "https://route.showapi.com/872-1" \ --data-urlencode "appKey=YOUR_APPKEY" \ --data-urlencode "star=shizi" \ --data-urlencode "needTomorrow=1" \ --data-urlencode "needWeek=1" \ --data-urlencode "needMonth=1" \ --data-urlencode "needYear=1" \ --max-time 15 ``` Node.js(fetch): ```javascript const url = new URL("https://route.showapi.com/872-1"); ["appKey=YOUR_APPKEY", "star=shizi", "needTomorrow=1", "needWeek=1", "needMonth=1", "needYear=1"] .forEach(p => { const [k, v] = p.split("="); url.searchParams.set(k, v); }); const data = await (await fetch(url, { signal: AbortSignal.timeout(15000) })).json(); if (String(data.showapi_res_body?.ret_code) !== "0") throw new Error("业务失败"); const { day, tomorrow, week, month, year } = data.showapi_res_body; // 未打开的周期不会出现,解构后是 undefined,渲染前判空 const cards = { day, tomorrow, week, month, year }; console.log(Object.keys(cards).filter(k => cards[k])); ``` ## 类型处理 日、明日、周、月四个周期的指数字段实测都是数字(如 `4`、`5`),转成星级直接可用。`year` 的四个指数是字符串且带「分」字(如 `"77分"`),要先用 `parseInt` 或 `Number()` 去掉单位再算长度。 字段的口径区别与归一化写法见指数怎么读那篇。 ## FAQ **Q1:没打开 `needWeek`,返回里还有 `week` 键吗?** 没有。2026-09-18 实测只带 `needWeek=1` 时,`showapi_res_body` 的键只有 `day`、`week`、`star`、`ret_code`,其余三个周期键不出现。按「开哪个用哪个」编码,取值前判空。 **Q2:`day` 到底是不是数组?** 实测是对象。接口文档把五个周期标为 `Object[]`,2026-09-18 的返回是 `"day": { ... }`。写 `body.day.summary_star`,不要写 `body.day[0]`。 **Q3:`year` 的 100 分和 `day` 的 5 分能放同一根进度条吗?** 不能,量纲不同。`day` 的 `summary_star` 满分 5,`year` 的 `general_index` 满分 100,各自归一化后再渲染。 **Q4:`lucky_color` 每个周期都有吗?** `day`、`tomorrow`、`week`、`month` 实测都有,`year` 没有。接口文档的 `month` 字段表没列 `lucky_color`,实测有返回。 **Q5:周运的 `time` 是日期还是区间?** 是区间,形如 `20260913-20260920`。落库时建议拆成 `start_date` / `end_date` 两个字段,不要塞进 `date` 类型。 ## 下一步阅读 - [星座运势查询:一次取齐五个周期的 needX 开关规则](https://www.showapi.com/guides/horoscope-multi-period-872) - [星座运势查询的指数怎么读:5 分制与 100 分制](https://www.showapi.com/guides/horoscope-index-meaning-872) - [星座运势查询:用 Python / cURL / Node.js 跑通第一次调用](https://www.showapi.com/guides/horoscope-quickstart-872) - [星座运势查询的两层状态码排查](https://www.showapi.com/guides/horoscope-error-handling-872) - **本系列共 13 篇**:查看[星座运势 API 指南总目录](https://www.showapi.com/guides/horoscope-guides-872)
加载中...