当前位置: 首页 > news >正文

平台介绍-开放API接口-IO说明

IO遵循平台内部API规范,接口入参出参和内部用是完全一样的。

很多平台的SDK需要客户端自己封装和解析json,本平台不是这个思路,而是使用DTO来封装,因为很多接口本来就是对内对外一样的,例如根据id返回人员的接口:

服务端:

@PostMapping("/person/findPersonInfo")
@Operation(summary = "获取人员信息")
public ResponseResult<PersonInfoDto> findPersonInfo(@RequestBody RequestInfo requestInfo)

SDK对应函数:

package org.qlm.access.sdk.service;
public class CoreHRService {public static ResponseResult<PersonInfoDto> findPersonInfo(RequestInfo requestInfo)    throws Exception{...}
}

这也就是为什么平台强调要把dto层单独拿出来做单独工程,封装成独立jar的原因。这样dto可以共享到很多对方。

SDK和服务端通讯引用的是

<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.6</version>
</dependency>

通讯返回的包结构如下:

public class SDKHttpResponse {public static int SUCCESS = 200;private int status;private String body;
}

最核心的技术是从SDKHttpResponse解析出真正需要的DTO结构

SDKHttpResponse中有静态方法:

public <T> ResponseResult<T> toResponseResult(RequestInfo req,Class<T> clazz){if (SUCCESS == this.getStatus()) {// 通讯成功Gson gson = new Gson();ResponseResult<T>result=new ResponseResult<T>();JsonObject resultObj = gson.fromJson(this.getBody(), JsonObject.class);result.setRetCode(resultObj.get("retCode").getAsInt());result.setMsg(resultObj.get("msg").getAsString());result.setFlag(resultObj.get("flag").getAsString());result.setVersion(resultObj.get("version").getAsString());result.setTimestamp(resultObj.get("timestamp").getAsString());result.setConsumer(resultObj.get("consumer").getAsString());result.setServer(resultObj.get("server").getAsString());result.setPath(resultObj.get("path").getAsString());result.setData(gson.fromJson(resultObj.get("data"),clazz));return result;} else {  // 通讯失败ResponseResult result=new ResponseResult();result.setRetCode(IOResultEnum.COMM_FAIL.getKey());result.setMsg("HTML Code:"+this.getStatus());result.setSerialNo(req.getSerialNo());return result;}
}

http://www.xdnf.cn/news/279415.html

相关文章:

  • 阿里云服务器全栈技术指导手册(2025版)
  • 基于 PyQt 的YOLO目标检测可视化界面+ nuitka 打包
  • Spring AI 实战:第六章、Spring AI源码浅析之一山可容二虎
  • 实验四 增强型可靠文件传输系统
  • 电容电阻作用
  • PostgreSQL 表的年龄(age)详解
  • 从 Java 开发到 AI 工程师:全面学习指南
  • C++多继承陷阱全解:虚析构函数与虚表布局的工程实践
  • 方案精读:业财融合转型路径和华为实践【附全文阅读】
  • 质检报告警示:亚马逊等平台3成节能插座不达标
  • [特殊字符]Spring Boot 后台使用 EasyExcel 实现数据报表导出(含模板、样式、美化)
  • 【iOS】 方法交换
  • Linux文件权限管理:chmod修改权限 与 chown修改所有者
  • Android第三次面试总结之网络篇补充
  • 力扣-链表-2 两数相加
  • 情绪ABC——AI与思维模型【93】
  • # 基于SIFT的图像相似性检测与拼接:Python实现与解析
  • 精品,CentOS7.9 Yum安装Nginx,并配置JSON日志格式
  • Matlab/Simulink - BLDC直流无刷电机仿真基础教程(七) - 波形解析专题P2
  • Java 中使用 Callable 创建线程的方法
  • FastApi快速实践
  • React class 的组件库与函数组件适配集成
  • C++函数总结
  • 【Java学习笔记】方法重载
  • 以太坊智能合约开发框架:Hardhat v2 核心功能从入门到基础教程
  • 深入浅出数据库管理系统
  • 工程师 - 汽车分类
  • 【AI面试准备】掌握常规的性能、自动化等测试技术,并在工作中熟练应用
  • Jenkis安装、配置及账号权限分配保姆级教程
  • 高性能 WEB 服务器 Nginx:多虚拟主机实现!