技术博客
免费名言警句:返回字段全解(contentlist / ret_code / allNum)

免费名言警句:返回字段全解(contentlist / ret_code / allNum)

作者: 万维易源
2026-09-03
免费名言警句返回字段ret_codecontentlist
# 免费名言警句:返回字段全解(contentlist / ret_code / allNum) > 接口 1839-1 · 免费 · 返回 JSON · 适用人群:已接入或准备接入的开发者 · 阅读时间:约 4 分钟 ## 核心要点 - ShowAPI 统一用 `showapi_res_body` 包裹业务数据;名言内容在 `contentlist` 数组里。 - 成功与否看 `ret_code`(业务层)与 `showapi_res_code`(系统层),二者都要判断。 - `allNum` / `allPages` / `maxResult` / `currentPage` 描述分页与条数,`content` 是"名言+作者"合并字符串。 ## Why 很多接入报错不是接口坏了,而是没分清"系统级包裹"和"业务数据"。比如只看顶层 `showapi_res_code` 为 0,就以为拿到名言了,结果 `contentlist` 是空的——其实业务层 `ret_code` 才是关键。本文把每一层字段讲清楚,让你拿到返回就知道怎么判错、怎么取数。 ## What **接口速览** | 项 | 值 | |----|----| | 请求地址 | `https://route.showapi.com/1839-1?appKey=YOUR_APPKEY` | | 返回格式 | JSON | | 业务数据位置 | `showapi_res_body` 对象内 | | 成功标志 | 系统层 `showapi_res_code == 0` 且 业务层 `ret_code == "0"` | ## How ### 步骤 1:识别两层结构 顶层是 ShowAPI 统一信封,包含 `showapi_res_code` / `showapi_res_error` / `showapi_res_id` / `showapi_res_body`。真正的内容在 `showapi_res_body`。 ### 步骤 2:先判系统层,再判业务层 ```python import requests r = requests.get( "https://route.showapi.com/1839-1", params={"appKey": "YOUR_APPKEY", "num": "3"}, timeout=15, ) data = r.json() # 1) 系统层 if data.get("showapi_res_code") != 0: print("系统级错误:", data.get("showapi_res_error")) else: body = data["showapi_res_body"] # 2) 业务层 if body.get("ret_code") != "0": print("业务错误:", body.get("remark")) else: for it in body["contentlist"]: print(it["content"]) ``` ## 返回示例与解析 ```json { "showapi_res_code": 0, "showapi_res_error": "", "showapi_res_id": "ce135f6739294c63be0c021b76b6fbff", "showapi_res_body": { "allNum": 3, "allPages": 1, "contentlist": [ { "content": "德盛者威广,力盛者骄众。齐桓公尚德以霸,秦二世尚刑而亡。——陆贾" } ], "currentPage": 1, "maxResult": 3, "remark": "查询成功!", "ret_code": "0" } } ``` ### 系统级字段(统一信封) | 字段 | 类型 | 说明 | |------|------|------| | `showapi_res_code` | Integer | 系统级状态码,0 表示请求被正常处理 | | `showapi_res_error` | String | 系统级错误信息 | | `showapi_res_id` | String | 本次请求的唯一标识 | | `showapi_fee_num` | Integer | 本次调用计费次数(系统级,文档标注于 envelope) | ### 业务字段(`showapi_res_body` 内) | 字段 | 类型 | 说明 | |------|------|------| | `ret_code` | String | `"0"` 成功,其他为失败 | | `remark` | String | 提示信息,如"查询成功!" | | `maxResult` | String | 当前页最大值(等于请求传入的 `num`) | | `currentPage` | String | 当前页码(默认 1) | | `contentlist` | Object[] | 内容列表 | | `contentlist[].content` | String | 名言 + 作者(合并字符串,如"王安石(宋)") | | `allPages` | String | 页码数 | | `allNum` | String | 内容条数 | ## 进阶 / 边界 - 本接口为单页随机返回,没有真正的多页数据集,`allPages` / `currentPage` 实质恒为 1,**不要**据此做翻页逻辑。 - `content` 把名言和作者拼在一起,作者常以"——""--"或"(朝代)"后缀形式出现,需自行正则拆分才能独立展示作者。 - `ret_code` 是字符串 `"0"`,比较时别写成整数 `0`。 ## FAQ **Q1:`showapi_res_code` 和 `ret_code` 有什么区别?** A:前者是系统级(请求是否被正确接收处理),后者是业务级(名言是否成功取回)。二者都正常才算真正成功。 **Q2:`contentlist` 为空但 `ret_code` 是 0,正常吗?** A:接口设计上 `ret_code=0` 时通常会有内容;若偶发为空,先确认是否触发了免费档位限制,再核对 `remark` 提示。 **Q3:`allPages` 能翻页吗?** A:本接口是随机返回,不是可翻页的数据集,`allPages` 恒为 1,不支持 offset/page 翻页。 **Q4:`ret_code` 非 0 时有哪些取值?** A:文档只明确 `"0"` 为成功、其他为失败,未给出完整失败码枚举;排查时以 `remark` 文案为准。 ## 相关能力 / 下一步阅读 - [免费名言警句:5 分钟接入,从注册到第一条名言](https://www.showapi.com/guides/famous-quotes-quickstart-1839) - [免费名言警句:num 参数怎么用?最多 10 条与"随机返回"机制](https://www.showapi.com/guides/famous-quotes-num-param-1839) - [免费名言警句:常见问题与排查(ret_code 非 0 / 返回为空 / 免费档位限制)](https://www.showapi.com/guides/famous-quotes-faq-1839) - **本系列共 10 篇**:查看[免费名言警句指南总目录](https://www.showapi.com/guides/famous-quotes-guides-1839)