web前-JAVA后端 数据API接口交互协议

前言

目前热门的主流web前端和Java后端数据技术架构:设备端和后台服务端,两者之间主要有两类的数据流和一类的控制流进行数据的交互。其图示可以根据下图的流程图表示:

c1753bcb0da74792a8ecc1986fbe0ea4.png

 这里的WebSocket就不进行详述,可以参考本人的另一篇关于WebSocket的介绍和使用的博客:VUE+websocket编写实现PC web端控制摄像头_丘比特惩罚陆的博客-CSDN博客

   上图的解析是,数据流1是某一功能的数据进行流动上报等操作,这一类饿交互关系采用的是http协议中的post请求,经过这一个请求报文可以将数据发送到平台上。数据流2是实时流的媒体数据,是由设备端将数据进行推流,推流到的地址可以是自己买的、拥有公网IP的媒体流转发服务器;第三个我们的控制流WebSocket意思是命令交互一类的数据,这一类的控制流数据采用的法式WebSocket长连接进行双向的交互模式,这个操作是由设备端发起进行连接的。

  

b9f118350e134f2e8959d58b8ceb7894.png

                                                             WebSocket运行流程图

数据流1由设备端向平台web端主动发起数据请求,web平台在进行数据响应数据流1的数据后将状态上报接口时告知数据流2是否已经进行了数据连接,如果需要进行数据请求的话,那设备就会发起WebSocket数据长连接请求,进行如上的WebSocket运行流程过程。如果需要的话,那么设备端就可以发起请求,创建一个WebSocket的控制流通道,所以作为命令交互相互使用。数据流2可以由平台通过控制流通道线设备发送命令创建。

 

数据格式

http数据格式要求

http请求报文中通常包含请求行(requestline)、请求头(header)、空行、和请求数据(请求实体)这是个部分组成的,响应报文包含状态行、消息报头、空行、响应正文四样。

f61dd55bd55544469c4b24fe3102c54c.png

 http协议对http交互中的请求行(接口地址)和请求数据/响应正文进行定义,约定请求数据和响应正文需要严格的json数据格式。

请求数据格式:

{

"id":"你写的东西",

"sessionId":"你要写的授权token",

"command":"你要请求命令(需要执行的动作)",

"params":{具体接口参数定义}

}

说明:

  1. 以上http所涉及到的所有请求接口都要必须遵循的格式定义,即所有http接口传输的请求数据都必须包含以上定义内容;
  2.  以上定义的请求数据统称“参数头”,具体赋值根据具体接口的要求进行组织;
  3. “参数头”内params的值统称“参数体”,内容根据不同的接口具体定义不同,如“参数头”内需传输二进制内容,则需要先转为base64。

 

调用要求

1、http头必须设置Content-Type并取值application/json;

2、http必须post形式提交;

3、接口请求/响应实体放入http-body提交;

4、接口请求/响应实体使用标准json数据格式;

5、接口请求/响应实体必须按约定格式组织;

6、接口请求实体中参数体params赋值必须按接口约定赋值;

7、接口请求/响应实体统一使用UTF-8字符集。

 

响应代码定义表

响应代码定义表
代码说明
成功0
授权信息已经失败10001
非法调用10002
参数名无效或错误10003
数据揭秘加密失败10004
系统出现繁忙10005
系统超时状态10006
缺失必要参数10007
参数值无效不符合标准10008
数据长度过长10009
不存在该服务接口10010
IP请求次数上限10011
用户请求超过上限10012
IP访问系统10013
系统暂停服务10014
其他未知原因导致10015
服务器异常10016
无法读取图片10017
图片大小不符合要求10018
解析图片失败10019

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 WebSocket数据格式

Websocket是为了实现设备或浏览器(客户端)和平台(服务器)之间的高效双向全双工通信,连接建立后主要用于服务器主动向客户端推送命令进行实时远程控制(包括升级)。

WebSocket协议中最小的通信单位是帧,一帧中包含标识、操作代码、掩码、数据、数据长度和数据组成,数据部分可以由操作代码表明是文本还是二进制。

ad229c20cbd341b1a135ec40cbc87d85.png

 二进制帧请求格式

7a5e714e224b435b89e4489eaaad996a.png

456f6c230e7f4b7cb537a9b8a25b2eea.png

 说明:

  1. 每一次数据发送,都采用固定12字节的头信息+消息体+数据体进行发送;
  2. 接收亦同,先接收12个字节头信息,根据头信息获取接下来的消息体和数据体;
  3. 其中消息体一般为JSON,协议格式同样的文本数据帧格式,数据体一般为二进制数据(图或文件);
  4. 发送和接收异步进行。

 

数据流http接口定义

接口参数(这里以控制流WebSocket的接口为例)

请求头
参数名赋值类型是否必填
id请求序号(32位的随机guid)string
commandGetParamstring
paramsObject(json格式的结构体)

 实例

{

"id":"0803502895724DBD9C49CA58C7D7DCC2",

"command":"GetParam",

"params":{}

}

 

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丘比特惩罚陆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值