跳到主要内容

1. 快速上手

本文介绍使用 V5 Java API 客户端完成首次调用的各个步骤。

快速开始(60 秒)

需要准备的 3 项内容

项目获取途径
服务器地址http://<server-ip>:80(TLS 为 https://<server-ip>:443REST API 端点。:7443 仅供管理控制台使用,API 请使用 80/443
账号 ID例如:api用于 API 调用的用户账号
令牌UUID 格式在控制台 安全管理 → API 认证令牌/token/index)中为该账号签发 → 安全设置 · 安全管理

只要具备这三个值,用下面一个代码块即可完成首次调用。

import java.util.List;
import plantpulse.api.v5.APIClient_V5;
import plantpulse.api.v5.dto.response.SiteResponseV5;

try (APIClient_V5 client = new APIClient_V5(
"HTTP", "100.68.69.41", 80, "api", "<issued-token>", false)) {
client.connect(); // 인증
System.out.println(client.system().ping().isPing()); // → true
for (SiteResponseV5 s : client.site().list()) // 사이트 목록
System.out.println(s.getSite_id() + " — " + s.getSite_name());
}

若该代码块输出 true 和站点列表,即表示准备就绪。下面 1.1~1.7 将详细说明各个步骤。

1.1 添加依赖

将 JAR 文件添加到类路径即可。

# 빌드 (Gradle + Java 21)
cd plantpulse-api
./gradlew build

产物生成在 target/ 下。

文件用途
target/plantpulse-api.jar需要与依赖一起集成到现有项目时

1.2 创建客户端

直接向 APIClient_V5 构造函数传入选项。

import plantpulse.api.v5.APIClient_V5;

APIClient_V5 client = new APIClient_V5(
"HTTPS", // 프로토콜: "HTTP" 또는 "HTTPS"
"100.68.69.41", // host
443, // port (REST API: 80=HTTP, 443=HTTPS)
"api", // user_id
"19ba7a54-1132-49f2-967e-3c6f5cd989a0", // token (api_key 발급용)
false); // debug

client.connect(); // 인증 + HTTP 클라이언트 초기화

// ... API 호출 ...

client.close(); // 종료

构造函数参数

参数类型说明
protocolString"HTTP""HTTPS"
hostString服务器主机名或 IP
portint服务器端口
user_idString认证账号 ID
tokenString已签发的令牌(UUID 格式)
debugbooleanHTTP 请求·响应调试日志

认证流程:调用 connect() 时,内部会使用 user_id + token 获取 api_key,之后所有调用都会自动将该密钥加入请求头。用户无需自行处理。

1.3 首次 API 调用 —— ping 与站点列表

import java.util.List;
import plantpulse.api.v5.APIClient_V5;
import plantpulse.api.v5.dto.response.SiteResponseV5;
import plantpulse.api.v5.dto.response.SystemPingResponseV5;

public class FirstCall {
public static void main(String[] args) throws Exception {

try (APIClient_V5 client = new APIClient_V5(
"HTTP", "100.68.69.41", 80, "api",
"19ba7a54-1132-49f2-967e-3c6f5cd989a0", false)) {

client.connect();

// 1) 서버 헬스체크
SystemPingResponseV5 ping = client.system().ping();
System.out.println("Server alive: " + ping.isPing()
+ " (v" + ping.getVersion() + ")");

// 2) 사이트 목록 (typed DTO 리스트)
List<SiteResponseV5> sites = client.site().list();
for (SiteResponseV5 s : sites) {
System.out.println(s.getSite_id() + " — " + s.getSite_name());
}
}
}
}

执行结果:

Server alive: true (v5.0)
SITE_00001 — 대전 1공장
SITE_00002 — 천안 2공장

1.4 try-with-resources 模式

APIClient_V5 实现了 AutoCloseable建议使用 try-with-resources

try (APIClient_V5 client = new APIClient_V5(proto, host, port, user, token, false)) {
client.connect();
// ... API 호출 ...
}
// close() 자동 호출 — HTTP 커넥션 정리

1.5 13 个服务一览

connect() 之后,即可通过下列服务方法访问所有域(lazy 初始化)。

client.system() // 헬스체크
client.site() // 사이트(공장)
client.customer() // 고객
client.employee() // 직원
client.product() // 제품
client.asset() // 자산 계층 (Area → Line → Equipment)
client.opc() // OPC 데이터 채널
client.tag() // 태그(데이터 포인트)
client.alarm() // 알람
client.order() // 작업지시
client.calendar() // 일정
client.path() // 자산 경로
client.flow() // Flow / Flow Node

1.6 V5 方法签名标准模式

所有域服务都遵循一致的方法模式。仅域名称不同,用法完全相同。

模式返回类型失败时返回值说明
create(req)*ResponseV5null注册
update(id, req)*ResponseV5null全量修改
delete(id)booleanfalse删除
get(id)*ResponseV5null单条查询
list()List<*ResponseV5>空列表全部列表
exists(id)booleanfalse是否存在
count()long0计数

⚠️ 不会抛出异常。 通信错误或服务器 ERROR 响应会以上表中的安全默认值返回。错误原因请通过日志或 BaseServiceV5.getErrorCode(env) 确认。详情参见响应格式与错误处理

1.7 调试模式

将构造函数的最后一个参数设为 true,HTTP 请求·响应将输出到控制台。

APIClient_V5 client = new APIClient_V5(
"HTTP", "100.68.69.41", 80, "api", TOKEN, true); // debug=true

输出示例:

[V5] GET https://server/api/v5/site headers={api_key=ab****cd}
[V5] response: 200 {"_status":"OK","data":[{"site_id":"SITE_00001",...}]}

后续步骤