条码生成与识别:5 分钟接入,从注册到生成第一条条码与识别第一张图
# 条码生成与识别:5 分钟接入,从注册到生成第一条条码与识别第一张图
> 接口/接入点:条码生成与识别(apiCode 1129)· 1129-1 生成、1129-3 图片链接识别 | 是否免费:免费(有档位限制) | 请求方式:POST/GET | 返回格式:JSON | 适用人群:新注册用户、初级开发者 | 阅读时间:约 5 分钟
## TL;DR
- 注册后在控制台拿到 AppKey,替换到请求 URL 的 `appKey=` 即可调用,无需其他配置。
- 生成:POST `1129-1`,传 `content`(要编码的数据)即可拿到 `imgUrl` 图片链接。
- 识别:用生成得到的图片链接调 `1129-3`,返回 `retText` 即条码里的文字。
## Why:这跟你有什么关系
条码在零售、仓储、图书、门票、会员卡里无处不在。过去你要引入一个条码库、处理字体与图片编码;现在用这一个接口,传一串数字/字符,就能拿到一张标准条码图,或反过来把一张条码图识别成文字——不用装任何本地依赖,HTTP 调一下就行。
## What:前置条件与接口速览
| 项 | 说明 |
|----|------|
| 接口地址(生成) | `https://route.showapi.com/1129-1?appKey={your_appKey}` |
| 接口地址(图片链接识别) | `https://route.showapi.com/1129-3?appKey={your_appKey}` |
| 鉴权 | URL 查询参数 `appKey` |
| 计费 | 免费服务,注册后默认可调用,有使用档次限制(档位具体数字以官方为准) |
| 数据时效 | 生成接口返回的图片链接**每 12 小时删除数据**,需及时保存 |
| 集成能力 | 提供 MCP 配置与 OpenAPI(YAML/JSON) 文档,覆盖全部接入点 |
## How:跑通「生成 + 识别」最小闭环
**步骤 1:获取 AppKey**
登录后到 [AppKey 管理控制台](https://www.showapi.com/console#/myApp) 复制你的 AppKey。
**步骤 2:生成一条 CODE_128 条码**
Python:
```python
import requests
APPKEY = "YOUR_APPKEY"
url = f"https://route.showapi.com/1129-1?appKey={APPKEY}"
resp = requests.post(url, data={
"content": "6901294172197", # 要编码进条码的数据
"width": "150", # 可选,95-500 像素
"height": "30", # 可选,20-120 像素
"formatType": "5", # 可选,5 = CODE_128
}, timeout=10)
data = resp.json()
body = data.get("showapi_res_body", {})
if body.get("ret_code") == "0":
print("条码图片:", body.get("imgUrl"))
else:
print("生成失败:", body)
```
cURL:
```bash
curl -X POST "https://route.showapi.com/1129-1?appKey=YOUR_APPKEY" \
-H "content-type: application/x-www-form-urlencoded" \
-d "content=6901294172197&width=150&height=30&formatType=5"
```
Node.js:
```javascript
const APPKEY = "YOUR_APPKEY";
const body = new URLSearchParams({
content: "6901294172197", width: "150", height: "30", formatType: "5"
});
const res = await fetch(`https://route.showapi.com/1129-1?appKey=${APPKEY}`, {
method: "POST",
headers: { "content-type": "application/x-www-form-urlencoded" },
body
});
const data = await res.json();
console.log(data.showapi_res_body.imgUrl);
```
**步骤 3:用图片链接识别回环**
把上一步的 `imgUrl` 传给 `1129-3`:
```python
img_url = body.get("imgUrl")
rec = requests.post(
f"https://route.showapi.com/1129-3?appKey={APPKEY}",
data={"imgUrl": img_url}, timeout=10
).json()
rb = rec.get("showapi_res_body", {})
print("识别结果 retText:", rb.get("retText"), "| ret_code:", rb.get("ret_code"))
```
## 返回示例与解析
生成返回:
```json
{
"showapi_res_code": 0,
"showapi_res_error": "",
"showapi_res_body": {
"imgUrl": "http://app2.showapi.com/img/barCodeImg/20160930/xxxx.jpg",
"ret_code": "0"
}
}
```
识别返回:
```json
{
"showapi_res_code": 0,
"showapi_res_body": {
"retText": "6901294172197",
"ret_code": "0"
}
}
```
`ret_code` 为字符串 `"0"` 表示成功;`retText` 是识别出的条码文字。
## 进阶 / 边界
- 免费不代表无限:有使用档次限制,超出需用平台积分兑换更高档位(详见 [档位说明](https://www.showapi.com/free-api))。
- 生成图片不是永久地址:**每 12 小时删除**,生产环境请生成后立即下载落盘。
- 识别三种传图方式(上传/链接/Base64)差异见 [三种传图对比](https://www.showapi.com/guides/barcode-three-input-modes-1129)。
## FAQ
**Q:ret_code 返回 "0" 但 imgUrl 为空,算成功吗?**
不算。`ret_code == "0"` 且 `imgUrl` 有值才是生成成功。若 `imgUrl` 为空,多为 `content` 与 `formatType` 不匹配(如 CODE_128 内容含不支持字符),换格式或核对内容后重试。
**Q:免费接口有调用频次限制吗?**
文档说明注册后默认可免费调用并设有使用档次限制,具体档位与频次以官方档位说明为准,本文不编造具体数字。
**Q:能一次生成多种格式吗?**
不能一次返回多种。每次请求指定一个 `formatType`,生成一种格式;需要多种可循环调用。
**Q:识别支持哪些条码类型?**
识别能力覆盖文档列举的 13 种格式(EAN_8、EAN_13、CODE_39、CODE_93、CODE_128、ITF、PDF_417、RSS_14、RSS_EXPANDED、UPC_A、UPC_E、UPC_EAN_EXTENSION、CODABAR),具体以实际识别结果为准。
## 相关能力 / 下一步阅读
- [条码生成与识别:13 种条码格式(formatType)对照与选型指南](https://www.showapi.com/guides/barcode-format-types-1129)
- [条码识别三种传图方式怎么选:上传图片 / 图片链接 / Base64 实战对比](https://www.showapi.com/guides/barcode-three-input-modes-1129)
- [条码生成与识别:返回字段全解(imgUrl / retText / ret_code / msg)](https://www.showapi.com/guides/barcode-response-fields-1129)
- **本系列共 12 篇**:查看[条码生成与识别指南总目录](https://www.showapi.com/guides/barcode-guides-1129)