ICS 65.020.30 CCS B 40 重 DB50 庆 市 地 方 标 准 DB50/T 1096.5—2021 畜牧兽医大数据应用与管理 第 5 部分:共享交换技术要求 2021-03-30 发布 2021-07-01 实施 重庆市市场监督管理局 发 布 DB50/T 1096.5—2021 前 言 本文件按照GB/T 1.1—2020《标准化工作导则 第 1 部分:标准化文件的结构和起草规则》的规定 起草。 本文件是DB50/T 1096的第 5 部分。DB50/T 1096已发布了以下部分: ----第 1 部分:总则 ----第 2 部分:元数据 ----第 3 部分:信息分类与编码 ----第 4 部分:数据接口 ----第 5 部分:共享交换技术要求 ----第 6 部分:信息资源目录 ----第 7 部分:管理要求 请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别专利的责任。 本文件由重庆市农业农村委员会提出并归口。 本文件起草单位:重庆市畜牧技术推广总站、重庆大学、广州中科易德科技有限公司、西南大学、 广州中国科学院软件应用技术研究所。 本文件主要起草人:夏云霓、古平、李引、李晓波、陈红跃、樊莉、张科、何道领、朱燕、黄文明、 陈雷。 I DB50/T 1096.5—2021 畜牧兽医大数据应用与管理 第 5 部分:共享交换技术要求 1 范围 本文件规定了畜牧兽医行业的数据共享与数据交换的技术要求。 本文件适用于畜牧兽医行业的数据共享与交换的具体实现。 2 规范性引用文件 下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文件, 仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于本 文件。 GB/T 7408 数据元和交换格式 信息交换 日期和时间表示法 GB/T 11457 信息技术 软件工程术语 GB/T 20014.1 良好农业规范 GB/T 28167 信息技术 XML元数据交换(XMI) GB/T 35295 信息技术 大数据 术语 GB/T 38672 信息技术 大数据 接口基本要求 3 术语、定义和缩略语 3.1 术语和定义 下列术语和定义适用于本文件。 3.1.1 数据提供方 data provider 在数据共享与交换中提供数据的一方。 3.1.2 数据使用方 data user 在数据共享与交换中接收并使用数据的一方。 3.2 缩略语 本文件中使用的缩略语如下: JSON:JS 对象标记(JavaScript Object Notation) HTTP:超文本传输协议(HyperText Transfer Protocol) 1 DB50/T 1096.5—2021 MD5:消息摘要算法第五版(Message-Digest Algorithm 5) 4 数据共享与交换要求 4.1 数据共享要求 数据共享应符合以下要求: a) 数据共享以 WEB 服务方式提供,按照GB/T 35295和GB/T 38672的要求进行。 b) 数据共享服务的设计、封装、开发按照GB/T 11457和GB/T 20014.1的要求进行。 4.2 数据交换方式 数据交换按照GB/T 7408和GB/T 28167的要求进行,分为以下三个阶段: a) 数据使用方通过HTTP向数据提供方发起数据交换请求; b) 数据提供方收到数据交换请求,解析数据报文,进行校验后对合法数据进行发送,非法数据则 发送错误代码; c) 数据使用方接收数据并存储,返回一个数据报文,数据提供方根据返回数据报文判断本次数据 交换是否成功。 4.3 数据交换与内容格式 数据交换的内容采用JSON作为数据交换的媒介, 其格式应符合ECMAScript 8.0的要求。 4.4 数据交换请求 JSON 格式 4.4.1 数据交换请求 JSON 应包含以下四个核心参数: a) b) c) d) 4.4.2 4.5 accessToken:调用接口的令牌。登陆成功后,返回一个 32 位的Hash字符串; timestamp:接口使用方发出请求的客户端时间(采用东八区系统时间UTC/GMT+08:00); totalNum:表示数据交换所携带的记录数量; data:为JSON数组,存放交换数据。 数据交换请求示例见附录 A。 数据交换返回 JSON 格式 4.5.1 数据交换返回结果 JSON 应包含以下四个核心参数: a) errorCode:为错误代码,表明数据交换失败的原因。当数据交换成功时,该参数为 0;当数 据交换失败时,该参数为自定义的错误代码; b) errorMessage:为返回结果信息,描述数据交换出错的具体情况。当数据交换成功时,该参数 为空值;当数据交换失败时,该参数为自定义的错误原因; c) success:标志此次数据交换是否成功。成功为true,失败为false; d) data:当数据交换成功时,则data参数为空值;当数据交换失败时,data参数存放交换失败的 数据。 4.5.2 数据交换返回示例见附录 B 和附录 C 。 4.6 数据共享与交换安全 2 DB50/T 1096.5—2021 4.6.1 数据交换请求及数据交换返回中的 data 部分,均使用 MD5 加密方式进行加密。在数据交换时, 数据发送方在传输数据的同时提供 MD5 码,数据接收方接收后使用 MD5 码对接收的数据进行验证。 4.6.2 使用 MD5 加密的实现示例见附录 D。 3 DB50/T 1096.5—2021 附录 A (资料性) 数据交换请求 JSON 示例 图A.1给出了数据交换请求JSON示例。 http://{SERVER_IP}/{SYTSTEM_NAME}/? accessToken=C7ABF9DAD2F94BB1907ADE0AFE3F4EC1&resourceCode=0104001×tamp=201711091 53905 Content-Type:application/json { "totalNum":1, "data":[{ "P_OPERATION":"ADD", "OBJID":"5CFC5CABA549CA9DE050A8C0DD01357A", "GSZCH":null, "JYXM_DETAIL":"畜禽肉类产品销售", "ZTYT_DETAIL":"肉类销售点", "SHXYM":"92440604MA4X4E4U5H", "RCJDGLJG":"重庆市农业执法总队", "FDDBR":"张XX", "JYCS":"重庆市九龙坡区白市驿镇黄金桥二号", "P_REGION_CODE":"440604", "FZRQ":"2017-10-18", "P_LAST_UPDATE_TIME":"2017-11-09 15:09:15", "PERMIT_STATUS":"NORMAL", "ZS":"重庆市九龙坡区白市驿镇黄金桥二号", "O_PERMIT_CODE":"\", "RCJDGLRY":"由负责日常监督管理机构指派", "YXKZ":"2022-10-17", "FZJG":"440604000000", "ZZJGDM":null, "XKZBH":"JY14406040114403", "QFR":"王XX", "FZJG_DETAIL":"重庆市农业执法总队", "P_ID":"JY14406040114403", "ZSZTXZBM":"440604", "ZTYT":"1003", "JYXM":"0102、0301", }] } 图A.1 数据交换请求JSON示例 4 DB50/T 1096.5—2021 附录 B (资料性) 数据交换成功返回JSON示例 图B.1给出了数据交换成功返回JSON示例。 { "errorCode": "0", "errorMessage": "", "success": "true", "data": [] } 图B.1 数据交换成功返回JSON示例 5 DB50/T 1096.5—2021 附录 C (资料性) 数据交换失败返回JSON示例 图C.1给出了数据交换失败返回JSON示例。 { "errorCode": "00000003", "errorMessage": "JSON数据验证失败", "success": "false", "data": [{"P_ID":"JY14406040114403"}, {"ZTYT":"40001001"}] } 图C.1 数据交换失败返回JSON示例 6 DB50/T 1096.5—2021 附录 D (资料性) MD5 摘要 JAVA 实现示例 图D.1给出了MD5摘要JAVA实现示例。 import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.security.MessageDigest; public class MD5 { static char hexdigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8','9', 'a', 'b', 'c', 'd', 'e', 'f'}; /** 对data生成MD5摘要 @param file 要加密的文件 @return MD5摘要码 */ public static String getMD5(File file) { FileInputStream fis = null; try { MessageDigest md = MessageDigest.getInstance("MD5"); fis = new FileInputStream(file); byte[] buffer = new byte[2048]; int length = -1; while ((length = fis.read(buffer)) != -1) { md.update(buffer, 0, length); } byte[] b = md.digest(); return byteToHexString(b); } catch (Exception ex) { ex.printStackTrace(); return null; } finally { try { fis.close(); } catch (IOException ex) { ex
DB50-T 1096.5-2021 畜牧兽医大数据应用与管理 第5部分:共享交换技术要求 重庆市
文档预览
中文文档
10 页
50 下载
1000 浏览
0 评论
0 收藏
3.0分
温馨提示:本文档共10页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 思安 于 2022-10-11 12:56:08上传分享