技术博客
节假日查询返回字段全解:ret_code 与 type(1/2/3) 及三接入点结构一文读懂

节假日查询返回字段全解:ret_code 与 type(1/2/3) 及三接入点结构一文读懂

作者: 万维易源
2026-08-27
节假日查询返回字段ret_codetype枚举
# 节假日查询返回字段全解:ret_code 与 type(1/2/3) 及三接入点结构一文读懂 > 接口 894(全部接入点) · 免费 · POST/GET · 返回 JSON · 适用人群:初级/中级开发者 · 阅读时间:约 8 分钟 ## TL;DR - 所有业务数据都在 `showapi_res_body` 里,外层是统一的系统包裹(`showapi_res_code` 等)。 - **ret_code 类型不一致**:894-4 是字符串 `"0"`,894-6 / 894-7 是数字 `0`(894-7 失败为 `-1`)——判断时统一转字符串最稳。 - `type` 只在 894-6 出现:`1`=工作日、`2`=周末、`3`=节假日。 ## Why:为什么值得先读这篇 节假日查询有三个接入点,返回结构各不相同。如果照着一个接入点的经验去解析另一个,很容易踩类型坑(字符串 vs 数字)、字段缺失(某接入点没有 `type`)、数组结构不同(`inverse_days` 在两个接入点里长得不一样)。这篇把三张"字段地图"摊开对照,后续写代码直接照表查。 ## What:统一返回包裹 无论调哪个接入点,外层都是 ShowAPI 统一包裹: | 字段 | 类型 | 说明 | |------|------|------| | showapi_res_code | Integer | API 返回的状态码 | | showapi_res_error | String | API 返回的错误信息 | | showapi_res_id | String | API 请求唯一标识 | | showapi_fee_num | Integer | 本次调用计费次数(免费接口为 0 或相应值) | | showapi_res_body | Object | 业务数据均在此对象内 | **判断成功的标准**:看 `showapi_res_body.ret_code`。⚠️ 各接入点类型不同,下文分述。 ## How:三接入点字段对照 ### 894-4 假日列表(按年查全年) | 字段 | 类型 | 说明 | |------|------|------| | ret_code | **String** | `"0"` 表示成功 | | data | Object[] | 整年节假日列表 | | data[].begin / end | String | 起止日期,如 `20250501` | | data[].holiday | String | 名称,如「劳动节」 | | data[].holiday_remark | String | 描述(含调休说明) | | data[].inverse_days | **String[]** | 调修日列表,如 `["20250427"]`,仅 2021 年后有值 | ### 894-6 节假日查询(按日判定) | 字段 | 类型 | 说明 | |------|------|------| | ret_code | **Number** | `0` 表示成功,其他为失败 | | day | String | 查询的日期 | | type | **String** | `1`=工作日、`2`=周末、`3`=节假日 | | weekDay | Number | 星期几的数字 | | cn / en | String | 星期几的中文 / 英文名 | | holiday | String | 节日名称;工作日显示「无」,周末显示「周末」 | | holiday_remark | String | 节日备注 | | begin / end | String | 节日或周末起止时间;**工作日时为空串** | | h | Object[] | 节日简介数组,**仅当 `needDesc=1` 或 `2` 时出现** | `h[]` 元素:`day`(公历日期)、`genus`(`public`=公众日/国际日、`traditional`=传统节日)、`info`(简介)、`name`(名称)、`lunaDay`(农历日期)、`origin`(起源)。 ### 894-7 调休日列表(查补班日) | 字段 | 类型 | 说明 | |------|------|------| | ret_code | **Number** | `0` 成功,`-1` 失败 | | remark | String | 错误信息(失败时填写) | | inverse_days | **Object[]** | 当年所有调休日 | | inverse_days[].name | String | 调休的节日 | | inverse_days[].begin / end | String | 调休起止日期 | ## 返回示例 **894-4 成功** ```json { "showapi_res_body": { "ret_code": "0", "data": [{ "holiday": "劳动节", "begin": "20250501", "end": "20250505", "holiday_remark": "5月1日(周四)至5日(周一)放假调休,共5天。", "inverse_days": ["20250427"] }] } } ``` **894-6 成功(含 h,needDesc=1)** ```json { "showapi_res_body": { "ret_code": 0, "day": "20260101", "type": "3", "cn": "星期四", "holiday": "元旦", "begin": "20260101", "end": "20260103", "h": [{ "day": "20260101", "genus": "public", "name": "元旦", "lunaDay": "", "info": "…", "origin": "…" }] } } ``` **894-7 失败** ```json { "showapi_res_body": { "ret_code": -1, "remark": "年份参数错误" } } ``` ## 进阶 / 边界 - **健壮的成功判断**:`if str(body["showapi_res_body"]["ret_code"]) == "0"` 可同时兼容字符串与数字,推荐统一这么写。 - **894-7 失败读 remark 而非 showapi_res_error**:业务级错误写在 `remark` 字段。 - **不传 needDesc 就没有 h**:894-6 默认不返回节日简介,需要简介时显式传 `needDesc=1`(全部)或 `2`(仅法定节假日)。 ## FAQ **Q1:ret_code 到底是字符串还是数字?** A:894-4 是字符串 `"0"`,894-6 / 894-7 是数字 `0`。统一用 `str(...)` 判断最安全。 **Q2:type 字段在所有接入点都有吗?** A:没有。`type`(1 工作日/2 周末/3 节假日)只在 894-6 出现。894-4 用 `holiday` 字段表达,894-7 用 `inverse_days` 表达调休。 **Q3:两个 inverse_days 一样吗?** A:不一样。894-4 的 `inverse_days` 是 String[](如 `["20250427"]`,仅 2021 后);894-7 的 `inverse_days` 是 Object[](含 name/begin/end)。 **Q4:怎么判断某天是不是节假日?** A:用 894-6 传 `day`,看 `type` 是否为 `3`。详见 [节假日查询:某天到底放不放假?](https://www.showapi.com/guides/holiday-query-day-check-894)。 **Q5:h 字段为什么有时返回空?** A:未传 `needDesc`,或当日无节日。传 `needDesc=1` 即可返回。 ## 相关能力 / 下一步阅读 - [节假日查询:5 分钟接入,从注册到拿到全年放假安排](https://www.showapi.com/guides/holiday-query-quickstart-894) - [节假日查询:某天到底放不放假?894-6 单日判定接入指南](https://www.showapi.com/guides/holiday-query-day-check-894) - [节假日查询:节日简介与农历日期怎么拿?needDesc 与 h 字段实战](https://www.showapi.com/guides/holiday-query-festival-intro-894) - **本系列共 12 篇**:查看[节假日查询指南总目录](https://www.showapi.com/guides/holiday-query-guides-894)