脑筋急转弯 API 返回字段全解:contentlist / list / 分页字段一文读懂
# 脑筋急转弯 API 返回字段全解:contentlist / list / 分页字段一文读懂
> 接口/接入点:脑筋急转弯(1618,1618-2 列表 / 1618-3 随机) · 免费服务 · 返回 JSON · 适用人群:已接入或准备接入的开发者 · 阅读时间约 6 分钟
## 核心要点
- 所有业务数据都包在系统级字段 `showapi_res_body` 内;系统级字段 `showapi_res_code` 为 0 表示成功。
- 列表接口(1618-2)业务数组是 `contentlist`,并带 `allNum`/`allPages`/`currentPage`/`maxResult` 四个分页字段。
- 随机接口(1618-3)业务数组是 `list`,另带 `remark` 与 `ret_code`,**没有分页字段**。
## Why:为什么必须弄清返回结构
两个接入点的返回"长得像但不一样"——这是接入时最易踩的坑。若按列表接口的 `contentlist` 去解析随机接口的返回,会得到空数组,误以为接口挂了。本文把两套字段并排讲清,作为全系列的"字段速查页"。
## What:接口速览
| 项目 | 说明 |
|------|------|
| 接口地址 | 1618-2:`https://route.showapi.com/1618-2?appKey=YOUR_APPKEY`;1618-3:`https://route.showapi.com/1618-3?appKey=YOUR_APPKEY` |
| 鉴权 | AppKey(query 参数 `appKey`) |
| 统一封装 | `showapi_res_body` 内为业务数据 |
| 实时性 | 题库由服务端维护,无需调用方更新 |
## How:字段对照表
系统级字段(两个接入点一致):
| 字段 | 类型 | 说明 |
|------|------|------|
| `showapi_res_code` | Number | 调用状态码,0 为成功 |
| `showapi_res_error` | String | 错误信息,成功为空 |
| `showapi_res_id` | String | 本次请求标识 |
| `showapi_fee_num` | Number | 计费单元数(免费接口也计量) |
| `showapi_res_body` | Object | 业务数据容器 |
1618-2(列表)业务字段:
| 字段 | 类型 | 说明 |
|------|------|------|
| `contentlist` | Object[] | 题目数组,每项 `{question, answer}` |
| `question` | String | 问题 |
| `answer` | String | 答案 |
| `allNum` | String | 题库总条数(实测约 11067) |
| `allPages` | String | 总页数 |
| `currentPage` | String | 当前页码 |
| `maxResult` | String | 每页最大条数(实测默认约 12,服务端控制) |
1618-3(随机)业务字段:
| 字段 | 类型 | 说明 |
|------|------|------|
| `list` | Object[] | 题目数组,每项 `{question, answer}` |
| `remark` | String | 提示信息(如「查询成功」) |
| `ret_code` | Number | 业务码,0 为成功 |
## 返回示例与解析
1618-3 实测返回(精简):
```json
{
"showapi_res_code": 0,
"showapi_fee_num": 1,
"showapi_res_body": {
"list": [
{"question": "三个金鑫,三个水叫淼,三个人叫众,三个鬼叫什么?", "answer": "救命"}
],
"remark": "查询成功",
"ret_code": 0
}
}
```
注意:随机接口没有 `allNum`/`allPages` 等分页字段,解析时不要用列表接口的逻辑去读这些字段(会得到 `undefined`)。
## 进阶 / 边界
- `maxResult` 的默认值文档未明确给出,实测 `page=1` 约返回 12 条,具体由服务端控制;代码不要硬编码"每页条数",以实际返回为准。
- `question`/`answer` 为纯文本,可能含换行或标点,前端展示时用 `white-space: pre-wrap` 更稳妥。
## FAQ
**Q1:为什么我读 `contentlist` 是空的?** 你可能在调随机接口(1618-3),它用的是 `list` 而非 `contentlist`。
**Q2:`ret_code` 和 `showapi_res_code` 有什么区别?** `showapi_res_code` 是系统级调用状态(0 成功);1618-3 额外返回业务级 `ret_code`(也在 body 内),正常也是 0。
**Q3:`allNum` 是会变的吗?** 题库由服务端维护,总量可能随运营调整,代码不要写死。
**Q4:免费接口的 `showapi_fee_num` 是什么?** 计费单元计数,免费接口也按档位计量,用于档位管控。
## 相关能力 / 下一步阅读
- [脑筋急转弯两个接入点返回结构差异:contentlist 与 list 别搞混](https://www.showapi.com/guides/brainteaser-return-diff-1618)
- [脑筋急转弯列表接口分页怎么用?page 参数与题库遍历指南](https://www.showapi.com/guides/brainteaser-pagination-1618)
- [脑筋急转弯 API:5 分钟从注册到拿到第一道题](https://www.showapi.com/guides/brainteaser-quickstart-1618)
- **本系列共 12 篇**:查看[脑筋急转弯 API 指南总目录](https://www.showapi.com/guides/brainteaser-guides-1618)