技术博客
渣男语录返回字段全解:ret_code / text / remark 一文读懂

渣男语录返回字段全解:ret_code / text / remark 一文读懂

作者: 万维易源
2026-09-03
渣男语录返回字段ret_codeJSON解析
# 渣男语录返回字段全解:ret_code / text / remark 一文读懂 - **接口/接入点**:免费渣男语录(apiCode=2962,接入点 1) · **是否免费**:免费 · **请求方式**:POST/GET · **返回格式**:JSON · **适用人群**:已接入开发者、需要解析返回的同学 · **阅读时间**:约 4 分钟 ## 核心要点 - 返回是**两层结构**:外层是 ShowAPI 统一信封(`showapi_res_*`),内层 `showapi_res_body` 才是业务数据。 - 业务体内只有三个字段:`ret_code`(状态)、`text`(语录正文)、`remark`(错误信息)。 - `ret_code` **只有 0 和 -1 两种取值**:0=成功,-1=接口准备中。没有更复杂的状态码。 ## Why:为什么要搞懂返回结构 - 很多新手拿到返回直接取 `text`,结果偶发取到空值——其实是 `ret_code=-1`(接口准备中)时 `text` 不可用。 - 分清"系统级成功"和"业务级成功",才能写出健壮的解析逻辑,避免把准备中状态当成正常内容展示给用户。 ## What:接口速览 | 项 | 值 | |----|----| | 业务体路径 | `showapi_res_body` | | 业务字段 | `ret_code`(Number)、`text`(String)、`remark`(String) | | 业务状态码 | `0`=调用成功,`-1`=接口准备中 | | 系统信封字段 | `showapi_res_code` / `showapi_res_error` / `showapi_res_id` / `showapi_fee_num` | ## How:正确解析返回 **Python(健壮解析)** ```python import requests resp = requests.post( "https://route.showapi.com/2962-1", params={"appKey": "YOUR_APPKEY"}, timeout=10, ) data = resp.json() body = data.get("showapi_res_body", {}) ret = body.get("ret_code") if ret == 0: print("语录:", body.get("text")) elif ret == -1: print("接口准备中,请稍后重试;remark=", body.get("remark")) else: print("未知状态:", ret, body.get("remark")) ``` **cURL + jq 校验** ```bash curl -s "https://route.showapi.com/2962-1?appKey=YOUR_APPKEY" \ | jq '.showapi_res_body.ret_code, .showapi_res_body.text' ``` **Node.js(fetch)** ```javascript const data = await (await fetch("https://route.showapi.com/2962-1?appKey=YOUR_APPKEY", { method: "POST" })).json(); const body = data.showapi_res_body || {}; if (body.ret_code === 0) console.log(body.text); else if (body.ret_code === -1) console.log("接口准备中:", body.remark); ``` ## 返回示例与解析 ```json { "showapi_res_id": "", "showapi_res_error": "", "showapi_res_code": 0, "showapi_res_body": { "ret_code": 0, "text": "你不要闹了,她只是我的小学同学。", "remark": "" } } ``` ### 系统信封字段(外层) | 字段 | 类型 | 说明 | |------|------|------| | `showapi_res_code` | 整数 | API 返回状态码(统一信封) | | `showapi_res_error` | 字符串 | API 返回错误信息,正常为空 | | `showapi_res_id` | 字符串 | 请求唯一标识 | | `showapi_fee_num` | 整数 | 调用计费次数(免费接口通常为 0) | ### 业务字段(showapi_res_body 内) | 字段 | 类型 | 取值 | 说明 | |------|------|------|------| | `ret_code` | 数字 | `0` / `-1` | `0`=调用成功,`-1`=接口准备中 | | `text` | 字符串 | 任意文本 | 返回的"渣男"用语;`ret_code=-1` 时不可用 | | `remark` | 字符串 | 文本/空 | 错误信息;成功时为空 | ## 进阶 / 边界 - **两层都该判**:外层 `showapi_res_code` 表示请求是否到达;内层 `ret_code` 表示业务是否成功。两层都正常才算拿到可用语录。 - **`-1` 不是错误**:`ret_code=-1` 表示接口准备中(如后端维护/初始化),属于可重试状态,建议做指数退避后重试,而非直接报错。 - **没有更多状态**:本接口业务状态码**只有 0 和 -1**,不要臆造 101/404 之类的枚举。 ## FAQ - **Q:为什么有时 text 是空的?** A:检查 `ret_code`,`-1`(接口准备中)时 `text` 不可用,稍后重试。 - **Q:ret_code 除了 0 和 -1 还有别的吗?** A:文档明确只有这两种取值,没有更多枚举。 - **Q:remark 什么时候有内容?** A:通常在 `ret_code=-1` 或异常时有说明,成功时为空。 - **Q:showapi_res_code 和 ret_code 有什么区别?** A:前者是系统信封(请求层),后者是业务层;两层都判才稳妥。 - **Q:返回里没有我想要的字段?** A:业务体只有 `ret_code`/`text`/`remark` 三个字段,没有坐标、状态机、批量等扩展字段。 ## 相关能力 / 下一步阅读 - [渣男语录:5 分钟接入,从注册到第一条土味情话](https://www.showapi.com/guides/zhanan-quotes-quickstart-2962) - [聊天机器人如何接入渣男语录?从调用到展示的全链路设计](https://www.showapi.com/guides/zhanan-quotes-chatbot-integration-2962) - [渣男语录使用档位与频率限制:如何避免触发限流](https://www.showapi.com/guides/zhanan-quotes-rate-limit-2962) - **本系列共 7 篇**:查看[渣男语录指南总目录](https://www.showapi.com/guides/zhanan-quotes-guides-2962)