毒鸡汤生成接口:返回字段全解(ret_code / remark / emposion)
# 毒鸡汤生成接口:返回字段全解(ret_code / remark / emposion)
> 接口/接入点:毒鸡汤生成(apiCode 2784,接入点 1) · 是否免费:免费 · 请求方式:POST/GET · 返回格式:JSON · 适用人群:已接入或准备接入的开发者 · 阅读时间:约 4 分钟
## 核心要点
- 返回分两层:ShowAPI **系统级包裹**(`showapi_res_*`)+ 业务体 `showapi_res_body`。
- 业务体只有三个字段:`ret_code`(0/-1)、`remark`(错误信息)、`emposion`(毒鸡汤正文)。
- 字段名是 `emposion`(不是 emotion),取数务必原样引用,否则拿到 `undefined`。
## Why:先看懂返回,再谈集成
很多接入问题不是接口挂了,而是取错字段:`emposion` 拼成 `emotion`、把系统级 `showapi_res_code` 当成业务成功标志。这一篇把结构讲透,后面所有文章都复用这张表。
## What:接口速览
| 项目 | 说明 |
|------|------|
| 接口地址 | `https://route.showapi.com/2784-1` |
| 入参 | 无(仅 appKey 鉴权) |
| 返回格式 | JSON |
| 业务数据位置 | `showapi_res_body` 对象内 |
## 系统级包裹字段
| 字段 | 类型 | 说明 |
|------|------|------|
| `showapi_res_code` | Integer | API 系统级状态码 |
| `showapi_res_error` | String | 系统级错误信息(成功时通常为空) |
| `showapi_res_id` | String | 本次请求唯一标识 |
| `showapi_fee_num` | Integer | 本次调用计费次数(免费接口通常为 0) |
| `showapi_res_body` | Object | **业务返回体,下文所有字段都在这里** |
## 业务体 `showapi_res_body` 字段表
| 字段 | 类型 | 取值 | 说明 |
|------|------|------|------|
| `ret_code` | Number | `0` / `-1` | **0=生成成功,-1=失败** |
| `remark` | String | 文本 | 失败时的错误信息;成功时为空 |
| `emposion` | String | 文本 | **毒鸡汤正文**(注意字段名即此拼写,非 emotion) |
> 该接口没有多状态机、没有枚举列表、没有子状态。状态判断只需要 `ret_code == 0` 即可。
## 返回示例
```json
{
"showapi_res_id": "",
"showapi_res_error": "",
"showapi_res_code": 0,
"showapi_res_body": {
"ret_code": 0,
"remark": "",
"emposion": "你以为只要长得漂亮就有男生喜欢?你以为只要有了钱漂亮妹子就自己贴上来了?你以为学霸就能找到好工作?我告诉你吧,这些都是真的!"
}
}
```
失败示例(`ret_code = -1`):
```json
{
"showapi_res_code": 0,
"showapi_res_body": {
"ret_code": -1,
"remark": "appKey 无效或已过期",
"emposion": ""
}
}
```
## 取数要点(Python 示例)
```python
body = data.get("showapi_res_body", {})
if body.get("ret_code") == 0:
quote = body.get("emposion") # 注意:emposion,不是 emotion
print(quote)
else:
print("失败:", body.get("remark"))
```
## 进阶/边界
- **只认 `ret_code`**:判断业务成功看 `showapi_res_body.ret_code == 0`,不要只看系统级 `showapi_res_code`。
- **失败一定有 `remark`**:`ret_code == -1` 时优先读 `remark` 定位原因。
- **`emposion` 为空串即失败**:成功时该字段才有内容。
## FAQ
**Q1:为什么我用 data.emposion 取到 undefined?**
字段名是 `emposion`,且它被包在 `showapi_res_body` 里。正确路径是 `data.showapi_res_body.emposion`(JavaScript)或 `data["showapi_res_body"]["emposion"]`(Python)。拼成 `emotion` 或漏掉外层包裹都会取空。
**Q2:ret_code 和 showapi_res_code 有什么区别?**
`showapi_res_code` 是 ShowAPI 系统级状态码(网络/网关/鉴权层);`ret_code` 在 `showapi_res_body` 内,是接口业务逻辑结果(0 成功/-1 失败)。业务判断以 `ret_code` 为准。
**Q3:有没有更多状态码,比如"内容为空""敏感词"?**
文档与 OpenAPI 定义中 `ret_code` 仅 0/-1 两态,没有更细的错误枚举。失败时信息集中在 `remark`。
## 相关能力 / 下一步阅读
- [毒鸡汤生成接口:5 分钟从注册到调通第一条毒鸡汤](https://www.showapi.com/guides/poison-soup-quickstart-2784) —— 第一次调用
- [毒鸡汤接口常见问题与避坑](https://www.showapi.com/guides/poison-soup-faq-2784) —— 失败排查全集
- [毒鸡汤接口 5 秒超时下,如何做重试与容错?](https://www.showapi.com/guides/poison-soup-timeout-retry-2784) —— 工程化容错
- **本系列共 14 篇**:查看[毒鸡汤生成接口官方指南总目录](https://www.showapi.com/guides/poison-soup-guides-2784)