图书ISBN查询返回字段全解:一本书的 13 个元数据字段一文读懂

约 8 分钟 入门图书ISBN查询返回字段ISBN元数据API文档
# 图书ISBN查询返回字段全解:一本书的 13 个元数据字段一文读懂 > 接口/接入点:图书ISBN查询(1626-1) · 是否免费:免费 · 请求方式:POST / GET · 返回格式:JSON · 适用人群:所有调用者(字段速查) · 阅读时间:约 6 分钟 ## TL;DR - 业务数据在 `showapi_res_body` 内;系统级字段 `showapi_res_code=0` 表示整体成功。 - `data` 是**单个图书对象**(非数组),含 13 个字段:书名、作者、出版社、出版时间、版次、页数、produce、开本、纸张、装帧、ISBN、定价、内容简介、封面图。 - `ret_code=0` 成功,其他值表示失败/未找到;`remark` 给出错误信息。 ## Why 看懂返回结构是写好代码的前提。很多人第一次解析时把 `data` 当数组遍历、或混淆了系统级 `showapi_res_code` 与业务级 `ret_code`,导致拿不到书名。本文把每一层、每一个字段讲清楚,作为全系列的字段速查附录。 ## What 接口返回采用"系统级包装 + 业务体"两层结构: | 层 | 字段 | 类型 | 说明 | |----|------|------|------| | 系统级 | `showapi_res_code` | Number | 0 表示请求整体成功 | | 系统级 | `showapi_res_id` | String | 本次请求唯一 ID | | 系统级 | `showapi_res_error` | String | 系统级错误信息(成功时为空) | | 系统级 | `showapi_fee_code` | Number | 计费相关标记(免费接口为 0) | | 业务体 | `showapi_res_body` | Object | 业务数据均在此对象内 | `showapi_res_body` 内: | 字段 | 类型 | 说明 | |------|------|------| | `ret_code` | Number | **0 成功**,其他值表示调用失败/未找到 | | `remark` | String | 错误信息(成功时为 `success`) | | `data` | Object | **单本图书信息对象**(非数组) | ## How 拿到响应后,先判系统级,再判业务级,最后取 `data`: ```python import requests APP_KEY = "YOUR_APPKEY" resp = requests.post( "https://route.showapi.com/1626-1", params={"appKey": APP_KEY}, data={"isbn": "9787208061644"}, timeout=10, ).json() if resp.get("showapi_res_code") != 0: raise RuntimeError(resp.get("showapi_res_error")) body = resp["showapi_res_body"] if body.get("ret_code") != 0: print("未找到:", body.get("remark")) else: d = body["data"] # 单个对象,不是列表 print(d["title"], d["author"], d["publisher"]) ``` ## 返回示例与解析(data 字段全表) `data` 内 13 个字段(名称 / 类型 / 说明 / 示例): | 字段 | 类型 | 说明 | 示例 | |------|------|------|------| | `title` | String | 图书名称 | 追风筝的人 | | `author` | String | 作者 | 卡勒德·胡赛尼 | | `publisher` | String | 出版社 | 上海人民出版社 | | `pubdate` | String | 出版时间 | 2006-05 | | `edition` | String | 版次 | 1 | | `page` | String | 页数 | 362 | | `produce` | String | 文档未给确切定义,示例多为日期(如 2014-7),可能为空 | 2014-7 | | `format` | String | 开本 | 32开 | | `paper` | String | 纸张 | 胶版纸 | | `binding` | String | 装帧 | 平装 | | `isbn` | String | ISBN 号 | 9787208061644 | | `price` | String | 定价 | 25.00 | | `gist` | String | 内容简介 | "许多年过去了……" | | `img` | String | 封面图下载链接 | http://static1.showapi.com/...jpg | > 说明:`data` 共 13 个信息字段(含 `isbn` 自身)。`produce` 在文档中描述为占位"请填写参数描述",实际返回多为日期形态,使用时建议做空值兜底展示。 ## 进阶 / 边界 - **`data` 是对象不是数组**:文档文字曾标注为 `Object[]`,但真实返回示例为单个对象,全部文章按"单个对象"解析。 - **两级成功标志**:系统级 `showapi_res_code` 与业务级 `ret_code` 都要判断,二者都为 0 才是真正成功。 - **字段可能为空**:`produce`、`paper` 等字段对部分图书为空,展示端需兜底(如显示"—")。 ## FAQ **Q1:为什么我按数组遍历 data 取不到数据?** 因为 `data` 是单个对象,不是数组。直接 `data["title"]` 取字段即可。 **Q2:showapi_res_code 和 ret_code 有什么区别?** 前者是系统级(网络/网关层)成功标志,后者是业务层(是否查到书)标志。都要判 0。 **Q3:produce 字段是什么?** 文档未给出确切定义,示例多为出版/印刷相关日期且可能为空;建议按"可选信息"处理,缺失时正常兜底。 **Q4:img 是永久链接吗?** `img` 为封面图下载链接,建议下载到自己的存储或做前端直链展示(详见封面图篇),不要假设永久不变。 ## 相关能力 / 下一步阅读 - [图书ISBN查询:5 分钟接入,从注册到第一条图书信息](https://www.showapi.com/guides/isbn-book-quickstart-1626) - [图书ISBN查询封面图怎么用:img 字段下载、缓存与展示](https://www.showapi.com/guides/isbn-book-cover-image-1626) - [图书ISBN查询错误码排查:ret_code 非 0 与"查不到"怎么办](https://www.showapi.com/guides/isbn-book-error-handling-1626) - **本系列共 12 篇**:查看[图书ISBN查询(apiCode=1626)官方指南总目录](https://www.showapi.com/guides/isbn-book-guides-1626)
加载中...