条码生成与识别:13 种条码格式(formatType)对照与选型指南
条码格式formatTypeEAN13CODE128选型指南 # 条码生成与识别:13 种条码格式(formatType)对照与选型指南
> 接口/接入点:条码生成与识别(apiCode 1129)· 1129-1 生成 | 是否免费:免费 | 请求方式:POST/GET | 返回格式:JSON | 适用人群:开发者、产品经理 | 阅读时间:约 6 分钟
## TL;DR
- 生成接口用 `formatType`(数字 1–13)选择条码类型,缺省不传按服务端默认(示例为 5=CODE_128)。
- 13 种格式覆盖一维码主流标准:EAN/UPC 系、CODE 系、ITF、PDF_417、RSS 系、CODABAR。
- 选型看场景:商品零售用 EAN_13/UPC,内部物流用 CODE_128,图书用 EAN_13(ISBN),堆叠式二维用 PDF_417。
## Why:为什么需要选型
不同条码标准的编码容量、字符集、行业约定都不一样。给错 `formatType`,要么生成失败(内容与格式不匹配),要么生成的条码扫码设备不认。先把"我要表达什么数据、谁来解码"想清楚,再选格式,能少走很多弯路。
## What:formatType 取值对照
`formatType` 为可选参数,传数字:
| formatType | 格式名 | 典型场景 |
|----|----|----|
| 1 | EAN_8 | 小包装商品短条码 |
| 2 | EAN_13 | 商品零售(含 ISBN 书号) |
| 3 | CODE_39 | 工业/内部物料编号 |
| 4 | CODE_93 | CODE_39 高密度变种 |
| 5 | CODE_128 | 物流、仓储、内部编码(默认示例值) |
| 6 | ITF | 仓储、配送(交错二五码) |
| 7 | PDF_417 | 堆叠式二维条码(证件、票据) |
| 8 | RSS_14 | GS1 _databar 系列 |
| 9 | RSS_EXPANDED | GS1 Databar 扩展 |
| 10 | UPC_A | 北美零售商品码 |
| 11 | UPC_E | UPC_A 缩短版 |
| 12 | UPC_EAN_EXTENSION | UPC/EAN 附加码 |
| 13 | CODABAR | 血库、图书馆、物流 |
> 文档未明确说明默认值,仅示例传 `5`(CODE_128);不传时以服务端实际默认为准。
## How:按格式生成示例
以生成 EAN_13(`formatType=2`)为例:
Python:
```python
import requests
APPKEY = "YOUR_APPKEY"
resp = requests.post(
f"https://route.showapi.com/1129-1?appKey={APPKEY}",
data={"content": "6901294172197", "formatType": "2", "width": "150", "height": "60"},
timeout=10,
)
body = resp.json().get("showapi_res_body", {})
if body.get("ret_code") == "0":
print("EAN_13 图片:", body.get("imgUrl"))
```
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&formatType=2&width=150&height=60"
```
Node.js:
```javascript
const APPKEY = "YOUR_APPKEY";
const body = new URLSearchParams({ content: "6901294172197", formatType: "2", width: "150", height: "60" });
const res = await fetch(`https://route.showapi.com/1129-1?appKey=${APPKEY}`, {
method: "POST", headers: { "content-type": "application/x-www-form-urlencoded" }, body
});
console.log((await res.json()).showapi_res_body.imgUrl);
```
## 返回示例与解析
```json
{
"showapi_res_body": {
"imgUrl": "http://app2.showapi.com/img/barCodeImg/20160930/xxxx.jpg",
"ret_code": "0"
}
}
```
## 进阶 / 边界
- **内容与格式要匹配**:`content` 必须满足所选格式的编码规则(如 EAN_13 需 12–13 位数字、CODE_128 支持更宽字符集)。不匹配会返回 `ret_code` 非 0,此时换 `formatType` 或核对内容。
- **尺寸范围**:`width` 95–500 像素、`height` 20–120 像素,超出无效。
- **图片有效期**:生成图片每 12 小时删除,见 [12 小时过期策略](https://www.showapi.com/guides/barcode-image-expiry-1129)。
## FAQ
**Q:不传 formatType 会用哪种?**
文档未明说默认值,仅示例用 5(CODE_128)。建议显式传值,避免依赖未文档化的默认行为。
**Q:能生成二维码(QR Code)吗?**
文档 13 种格式中不含 QR Code;列表中的 PDF_417 是堆叠式二维条码,非 QR。需要 QR 请另寻对应接口。
**Q:CODE_128 和 CODE_39 怎么选?**
CODE_128 字符集更全、密度更高,通用性强,适合物流/仓储;CODE_39 更"老派"、容错好,部分工业设备只认它。
**Q:生成的条码能被手机普通扫码 App 识别吗?**
EAN_13、CODE_128、PDF_417 等主流格式均可被常见扫码工具识别;具体以你手头的扫码设备/App 为准。
**Q:width/height 单位是?**
像素(文档示例值 150×30)。范围 width 95–500、height 20–120。
## 相关能力 / 下一步阅读
- [条码生成与识别:5 分钟接入,从注册到生成第一条条码与识别第一张图](https://www.showapi.com/guides/barcode-quickstart-1129)
- [条码生成图片 12 小时过期:缓存与本地落盘保存策略](https://www.showapi.com/guides/barcode-image-expiry-1129)
- [零售与仓储如何用条码生成接口做商品条码与价签](https://www.showapi.com/guides/barcode-generate-retail-1129)
- **本系列共 12 篇**:查看[条码生成与识别指南总目录](https://www.showapi.com/guides/barcode-guides-1129)