# 零售与仓储如何用条码生成接口做商品条码与价签
> 接口/接入点:条码生成与识别(apiCode 1129)· 1129-1 生成 | 是否免费:免费 | 请求方式:POST/GET | 返回格式:JSON | 适用人群:零售/仓储运营、全栈工程师 | 阅读时间:约 7 分钟
## TL;DR
- 把 SKU 编码作为 `content` 传给 1129-1,即可生成该商品的条码图片。
- 批量生成 = 循环调用 1129-1,每次一个 SKU;接口无批量端点。
- 生成的图片链接**每 12 小时删除**,生产环境务必生成后立即下载落盘(对象存储/CDN)。
## Why:零售与仓储的刚需
商品上架要贴条码、价签要印条码、仓储拣货要扫条码。若每个 SKU 都手动用条码软件导出图,既慢又难统一管理。用 1129-1 你可以在后台按 SKU 自动出图,和商品主数据联动。
## What:接口速览
| 项 | 说明 |
|----|------|
| 地址 | `https://route.showapi.com/1129-1?appKey={your_appKey}` |
| 必填 | `content`(SKU/商品编码) |
| 可选 | `width`(95–500)、`height`(20–120)、`formatType`(1–13) |
| 返回 | `showapi_res_body.imgUrl`(图片链接)、`ret_code` |
| 时效 | 图片每 12 小时删除,需自行保存 |
## How:SKU → 条码图 批量生成并落盘
Python(循环生成 + 下载保存):
```python
import requests, os
APPKEY = "YOUR_APPKEY"
skus = ["6901294172197", "6901234567890", "6912345678901"]
os.makedirs("barcodes", exist_ok=True)
for sku in skus:
r = requests.post(
f"https://route.showapi.com/1129-1?appKey={APPKEY}",
data={"content": sku, "formatType": "5", "width": "150", "height": "40"},
timeout=10,
)
body = r.json().get("showapi_res_body", {})
if body.get("ret_code") != "0" or not body.get("imgUrl"):
print("SKU 失败:", sku, body); continue
# 关键:立即下载落盘,route.showapi 链接 12h 后失效
img = requests.get(body["imgUrl"], timeout=10).content
with open(f"barcodes/{sku}.jpg", "wb") as f:
f.write(img)
print("已保存", sku)
```
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=5&width=150&height=40"
```
Node.js(单条):
```javascript
const APPKEY = "YOUR_APPKEY";
const body = new URLSearchParams({ content: "6901294172197", formatType: "5", width: "150", height: "40" });
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" } }
```
## 进阶 / 边界
- **落盘是必须的**:`imgUrl` 12h 后删除,不要把 route.showapi 链接直接写进价签/数据库长期字段;下载后转存到你的对象存储/CDN。
- **格式选择**:零售商品建议 `formatType=2`(EAN_13)以契合扫码枪/收银;内部物流可用 `5`(CODE_128)。详见 [13 种格式对照](https://www.showapi.com/guides/barcode-format-types-1129)。
- **无批量端点**:要出一批图就循环调用,注意档位限制。
## FAQ
**Q:一个 SKU 能生成不同尺寸吗?**
可以,通过 `width`(95–500)、`height`(20–120) 调整;生成后同样需落盘保存。
**Q:价签上想同时印商品名和条码怎么办?**
接口只返回条码图;商品名排版由你的价签模板(如 HTML/PDF 生成)负责,把 `imgUrl` 落盘后的本地图嵌入即可。
**Q:生成失败常见原因?**
多为 `content` 与 `formatType` 不匹配(如 EAN_13 内容非 12–13 位数字),或超出尺寸范围;返回 `ret_code` 非 0 时核对后重试。
**Q:落盘后原链接还能用多久?**
原 `imgUrl` 每 12 小时删除;落盘到自有存储后即以你的存储为准,与原链接时效无关。
## 相关能力 / 下一步阅读
- [条码生成图片 12 小时过期:缓存与本地落盘保存策略](https://www.showapi.com/guides/barcode-image-expiry-1129)
- [条码生成与识别:13 种条码格式(formatType)对照与选型指南](https://www.showapi.com/guides/barcode-format-types-1129)
- [条码生成与识别:返回字段全解(imgUrl / retText / ret_code / msg)](https://www.showapi.com/guides/barcode-response-fields-1129)
- **本系列共 12 篇**:查看[条码生成与识别指南总目录](https://www.showapi.com/guides/barcode-guides-1129)