# 公共样式API接口文档

## 一、功能说明

该接口文档适用于在自有系统或网页里，调用草料标签样式库中的公共样式，批量生成不同内容的二维码标签。无需导出数据在我们平台再导入数据生码。

![二维码标签生成示例](https://blogcdnimg.clewm.net/2023/11/image-1698822716345_16988227170736.png)
图片说明：展示溯源管理系统中“茶叶·9月第20批”商品生成标签的流程：左侧列表选中商品，点击“生成标签”后，系统直接在右侧页面生成带二维码的标签图，并附有API调用示例说明。

## 二、接口调用说明

### URL

https://open-api.cli.im/cli-open-platform-service/v1/labelStyle/create

### HTTP请求方式

GET

### 请求参数

- 是否必须：是：公共样式编号，例如B216
- 是否必须：是：二维码动态内容 字节越多，二维码图案越复杂，建议在1500字节内
- 是否必须：是：返回类型，不传时返回二进制图片流，base64-返回base64编码
- 是否必须：是：主题颜色，例如#166BC7
- 是否必须：否：根据公共样式需要传入的动态字段，cliF表示普通文本字段，按照字段展示顺序排列，例如公共样式有3个字段，全为文本字段，传入参数为： cliF1=xx&cliF2=xx&cliF3=xx
- 是否必须：否：根据公共样式需要传入的动态字段，cliP表示图片字段，图片需要公网可访问静态地址，按照字段展示顺序排列，例如公共样式有4个字段，第二个为图片字段，其余为文本字段，传入参数为： cliF1=xx&cliP2=xx&cliF3=xx&cliF4=xxc

### 返回参数

当return_file未传时，返回二进制图片

当return_file=base64时，返回base64图片编码，可用于嵌入网页或传输到系统中

请求示例：
https://open-api.cli.im/cli-open-platform-service/v1/labelStyle/create?cliT=B572&cliD=图片样式二维码&cliF1=人员实名信息卡&cliF2=安全生产，人人有责&cliP3=https://ncstatic.clewm.net/rsrc/2023/0612/13/952a04c092275a684025ef0d2ed6bcce.png&cliF4=张栋旭&cliF5=设备操作员&cliF6=工号：MH-0403&cliF7=部门：现场项目部&cliF8=班组：水泥机械班组&return_file=

### 返回示例

当return_file未传时，返回以下图片二进制流

当return_file=base64时，返回以下图片的base64编码，可用于嵌入网页或传输到系统中

![文件图片](https://blogcdnimg.clewm.net/2023/08/image-1692783111627_16927831121120.png)
图片说明：人员实名信息卡，展示员工姓名、工号、部门及班组等基本信息，用于现场作业身份核验。

### 错误码

- 错误码：200：成功
- 错误码：400：请求的数据格式不符！请检查参数正确性
- 错误码：40000：系统繁忙，请稍后再试系统可能维护升级中，等待后续功能恢复
- 错误码：40001：参数错误检查传递参数是否按照文档规范

## 三、调用代码示例

在草料标签样式库中，选择一个标签，直接获取标签样式编号，或者进入样式详情页，点击调用API制作。
  
标签制作页链接：https://cli.im/label
 
![标签制作页面截图](https://blogcdnimg.clewm.net/2023/08/image-1692782894013_16927828947323.png)
图片说明：人员工牌模板展示页，含19种不同样式工牌预览，突出显示“实名信息卡[新]”模板，供用户选择使用。

以B572标签为准，可以看到B582模板有标签有8个固定字段，第3个为图片字段，其余为文本字段

所以API动态字段为cliF1到cliF8，中间图片字段为cliP3，以下为示例代码：

package org.cli.platform.service.util;

import org.apache.commons.io.IOUtils;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import org.springframework.web.util.UriUtils;

public class CliApiV1Demo {
    public static void main(String[] args) throws IOException {
        String cliD = UriUtils.encode("图片样式二维码", StandardCharsets.UTF_8.name());
        String cliF1 = UriUtils.encode("人员实名信息卡", StandardCharsets.UTF_8.name());
        String cliF2 = UriUtils.encode("安全生产，人人有责", StandardCharsets.UTF_8.name());
        String cliP3 = UriUtils.encode("https://ncstatic.clewm.net/rsrc/2023/0612/13/952a04c092275a684025ef0d2ed6bcce.png", StandardCharsets.UTF_8.name());
        String cliF4 = UriUtils.encode("张栋旭", StandardCharsets.UTF_8.name());
        String cliF5 = UriUtils.encode("设备操作员", StandardCharsets.UTF_8.name());
        String cliF6 = UriUtils.encode("工号：MH-0403", StandardCharsets.UTF_8.name());
        String cliF7 = UriUtils.encode("部门：现场项目部", StandardCharsets.UTF_8.name());
        String cliF8 = UriUtils.encode("班组：水泥机械班组", StandardCharsets.UTF_8.name());
        URL url = new URL("http://open-api.cli.im/cli-open-platform-service/v1/labelStyle/create?cliT=B572&cliD=" + cliD + "&return_file=&theme_color=&cliF1=" + cliF1 + "&cliF2=" + cliF2 + "&cliP3=" + cliP3 + "&cliF4=" + cliF4 + "&cliF5=" + cliF5 + "&cliF6=" + cliF6 + "&cliF7=" + cliF7 + "&cliF8=" + cliF8);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoOutput(true);
        connection.setRequestMethod("GET");
        connection.connect();

        InputStream stream = connection.getInputStream();
        FileOutputStream out = new FileOutputStream(new File("test.png"));
        IOUtils.copy(stream, out);
    }
}

## 四、调用说明

1. Beta期间 开通API 的用户可长期免费调用；
2. API调用根据IP秒级并发30次，如需更高并发次数，可 [前往社区反馈](https://cli.im/community/minihome/mixflow/90 "社区反馈")
3. 如果标签API调用流程、速度等方面问题，可以 [前往社区反馈](https://cli.im/community/minihome/mixflow/90 "社区反馈") ，草料官方顾问和技术会定期查看并回复
4. 如需调用你自己账号下设置好的标签样式，可在草料后台，【标签样式】目录下选择我的标签样式，进入标签样式详情页，开通调用。[查看私有样式API接口文档](/help/integration-and-connection/label-api/api "私有样式API接口文档")
