技术博客
笑话大全返回字段全解:showapi_res_body 与 id/title/text 一文读懂

笑话大全返回字段全解:showapi_res_body 与 id/title/text 一文读懂

作者: 万维易源
2026-08-31
笑话大全返回字段JSON解析ShowAPI
# 笑话大全返回字段全解:showapi_res_body 与 id/title/text 一文读懂 > 接口 341-5 · 免费 · JSON · 适用人群:已接入或准备接入的开发者 · 阅读时间:约 4 分钟 ## 核心要点 - 返回分两层:系统级包裹(`showapi_res_*`)+ 业务体 `showapi_res_body`。 - 笑话本身只有 6 个业务字段:`id` / `title` / `text` / `ret_code` / `remark` / `ct`。 - `ret_code = 0` 才是成功;系统级 `showapi_res_code` 与业务级 `ret_code` 是两个不同层级的状态。 ## Why 接入任何接口,第一件事是搞清楚"返回的字段哪个能用、哪个只是系统元数据"。笑话大全的返回被 ShowAPI 统一包裹了一层系统字段,新手容易把 `showapi_res_code` 和 `showapi_res_body.ret_code` 搞混,或误把 `title` 当唯一标题。本篇用一张表把所有字段讲清楚,让你写解析代码时不再猜。 ## What | 项 | 说明 | |----|------| | 返回结构 | 系统级对象 + `showapi_res_body`(业务体) | | 业务字段数 | 6 个(`id` `title` `text` `ret_code` `remark` `ct`) | | 成功判定 | `showapi_res_body.ret_code == 0` | | 数据来源 | 字段结构与 OpenAPI 3.0 文档一致 | ## How 解析时先取 `showapi_res_body`,再读里面的业务字段;不要把系统级字段当笑话内容。 ```python import requests APP_KEY = "YOUR_APPKEY" data = requests.post( "https://route.showapi.com/341-5", params={"appKey": APP_KEY}, headers={"content-type": "application/x-www-form-urlencoded"}, timeout=20, ).json() body = data["showapi_res_body"] print("系统级状态码 showapi_res_code =", data.get("showapi_res_code")) print("业务成功? ret_code =", body.get("ret_code")) # 0 为成功 print("笑话正文 text =", body.get("text")) ``` ## 返回示例与解析 ```json { "showapi_res_error": "", "showapi_fee_num": 1, "showapi_res_code": 0, "showapi_res_id": "69aa6d3cfb638c5c252249e7", "showapi_res_body": { "id": "69a921a1530719e3c602fe0b", "title": "讽刺、荒唐的爆笑事儿", "text": "博士毕业两年多,父母从老家来看我……", "ret_code": 0, "remark": "查询成功!", "ct": "2026-03-05 14:24:33.420" } } ``` ### 系统级字段(包裹层) | 字段 | 类型 | 含义 | |------|------|------| | `showapi_res_code` | 整数 | API 网关整体状态码,0 一般表示网关正常 | | `showapi_res_error` | 字符串 | 网关错误信息,成功时为空 | | `showapi_res_id` | 字符串 | 本次请求唯一标识,工单排查用 | | `showapi_fee_num` | 整数 | 本次调用的计费次数(免费接口也返回,通常为 1) | ### 业务字段(`showapi_res_body` 内) | 字段 | 类型 | 含义 | 展示建议 | |------|------|------|---------| | `id` | String | 本条笑话唯一 id | 可做去重 key | | `title` | String | 分类标题(文档标注"会重复") | 可不展示,或仅作分类标签 | | `text` | String | 笑话正文 | **主要展示内容** | | `ret_code` | Number | `0`=成功,其他=失败 | 先判它再取 `text` | | `remark` | String | 返回描述,如"查询成功!" | 失败时可展示给用户 | | `ct` | String | 返回时间(如 `2026-03-05 14:24:33.420`) | 一般无需展示 | ## 进阶 / 边界 - **两个"成功"要分清**:`showapi_res_code` 是网关层;真正的业务成败看 `showapi_res_body.ret_code`。建议以 `ret_code` 为准。 - **`title` 会重复**:文档明确说明,别把它当唯一标题或主键。 - **没有错误码枚举**:本接口文档/OpenAPI 未给出 `ret_code` 的非零枚举值,遇到非 0 时读 `remark` 描述即可,不要臆造错误码含义(排查见[调用失败排查](https://www.showapi.com/guides/joke-api-error-341))。 ## FAQ **Q1:showapi_res_code 和 ret_code 有什么区别?** 前者是 ShowAPI 网关的状态码(请求是否送达/鉴权是否通过),后者是业务体里的执行结果。`ret_code = 0` 才是"拿到笑话成功",应以它为准。 **Q2:text 为空或不存在怎么办?** 先确认 `ret_code == 0`;若非 0,读 `remark` 看原因。正常成功时 `text` 必有内容。 **Q3:title 每次都一样,是不是出错了?** 不是。文档明确标注 `title`"会重复",是分类标题,非唯一标识,属正常现象。 **Q4:showapi_fee_num 是什么意思?免费接口为什么有计费次数?** 它是 ShowAPI 统一的调用计费次数统计字段,免费接口也会返回(通常为 1),不代表已扣费。 **Q5:ct 时间是什么时区?** 返回示例形如 `2026-03-05 14:24:33.420`,为接口服务端时间字符串,展示时一般无需处理。 ## 相关能力 / 下一步阅读 - [笑话大全:5 分钟接入,从注册到拿到第一条笑话](https://www.showapi.com/guides/joke-api-quickstart-341) - [笑话大全调用失败排查:showapi_res_code 与 ret_code 非 0 怎么办](https://www.showapi.com/guides/joke-api-error-341) - [免费接口也要讲边界:笑话大全缓存策略与档位限制应对](https://www.showapi.com/guides/joke-api-cache-tier-341) - **本系列共 10 篇**:查看[笑话大全 API 指南总目录](https://www.showapi.com/guides/joke-api-guides-341)