边缘智能-大模型架构初探

R2Cloud接口

机器人注册

请求和应答

注册是一个简单的 HTTP 接口,根据机器人/用户信息注册,创建一个新机器人。

请求 URL

URL http://ip/robot/reg
Type POST
HTTP Version 1.1
Content-Type application/json

请求参数

Param 含义 Rule 是否必须 缺省
robotid 机器人唯一 ID md 5 加密后的值 必填 NULL
robotPwd 机器人密码 md 5 加密后的值 必填 NULL
nickName 昵称 不超过 32 个字符 可选 NULL
email 邮箱 符合 email 规范 可选 NULL
userName 用户名称 不超过 32 个字符 可选 NULL
服务示例

返回结果参数

名称 含义 规则说明
code 结果值 0:成功 1:失败 2:机器人存在

调用接口

json 复制代码
{
    "robotid":"ced165163e51e06e01dc44c35fea3eaf",
    "robotPwd":"3687f20fbdfab8dd7e645f1e2f95268b",
    "nickName":"jarvis",
    "email":"Jarvis@joysonrobot.com",
    "userName":"gv"
}

返回值

json 复制代码
{
    "code":0
}
处理逻辑

客户端提交的密码需要使用 md5 加密,不能提供明文的密码。

机器人上线(登录)

请求和应答

登录,根据机器人的登录信息,连接到云平台。

请求URL
URL http://ip/robot/login
Type POST
HTTP Version 1.1
Content-Type application/json
请求参数
Param 含义 Rule 是否必须 缺省
robotid 机器人唯一 ID md 5 加密后的值 必填 NULL
robotPwd 机器人密码 md 5 加密后的值 必填 NULL
服务示例

返回结果参数说明

名称 含义 规则说明
code 结果值 0:成功 1:失败
token 令牌 每次上线后,生成的token不一样,后续请求需要带上token

调用接口

json 复制代码
http://ip/robot/login
参数
{
    "robotid":"ced165163e51e06e01dc44c35fea3eaf",
    "robotPwd":"3687f20fbdfab8dd7e645f1e2f95268b"
}
返回结果
{
    "code":0,
    "token":"3a58ca22317e637797f8bcad5c047446"
}
处理逻辑
Token验证

Token 的中文有人翻译成 "令牌",意思就是,你拿着这个令牌,才能过一些关卡。

Token 是一个用户自定义的任意字符串。在成功提交了开发者自定义的这个字符串之后,Token 的值 会保存到服务器后台。只有服务器和客户端前端知道这个字符串,于是 Token 就成了这两者之间的 密钥,它可以让服务器确认请求是来自客户端还是恶意的第三方。

使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的:

  1. 客户端使用用户名和密码请求登录;
  2. 服务器收到请求,验证用户名和密码;
  3. 验证成功后,服务端生成一个Token,这个Token可以存储在内存、磁盘、或者数据库里,再把这个Token发送给客户端;
  4. 客户端收到Token以后可以存储起来,比如放在Cookie或者Local Storage;
  5. 客户端每次向服务器请求资源时必须带着服务器签发的Token;
  6. 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回 请求的数据。

私有文件1

请求URL
URL http://ip/file/ownfile?cmd=count
Type POST
HTTP Version 1.1
Content-Type application/json
请求参数
Param 含义 Rule 是否必须 缺省
token token 同上 必填 NULL
robotid 机器人唯一 ID 不超过32个字符 必填 NULL
服务示例

返回结果参数说明

名称 含义 规则说明
code 结果值 0:验证成功 1:验证失败
total 文件数量

调用接口

json 复制代码
http://ip/file/ownfile?cmd=count
参数
{
    "token":"3a58ca22317e637797f8bcad5c047446",
    "robotid":"ced165163e51e06e01dc44c35fea3eaf"
}
返回结果
{
    "total":1,
    "code":0
}
没有文件返回
{
    "total":0,
    "code":0
}
处理逻辑

私有文件2

请求URL
URL http://ip/file/ownfile?cmd=normal
Type POST
HTTP Version 1.1
Content-Type application/json
请求参数
Param 含义 Rule 是否必须 缺省
token token 同上 必填 NULL
robotid 机器人唯一 ID 不超过32个字符 必填 NULL
count 文件个数 私有文件数量>0 必填 NULL
start 开始位置 必填 NULL
服务示例

返回结果参数说明

名称 含义 规则说明
files 文件结果集 "code":0正常,1失败, "count":当前文件数量, "total":私有文件数量, "robotid":机器人唯一ID, "md5":md5的值, "create_time":创建时间, "file_name":文件名, "share_status":共享状态, "pv":使用次数, "url":URL, "size":文件大小, "type":文件类型

调用接口

json 复制代码
http://ip/file/ownfile?cmd=normal
参数
{
    "count":2,
    "start":0,
    "token":"3a58ca22317e637797f8bcad5c047446",
    "robotid":"ced165163e51e06e01dc44c35fea3eaf"
}
返回结果
{
    "code":0,
    "total":2,
    "files":[
        {
            "robotid":"ced165163e51e06e01dc44c35fea3eaf",
            "md5":"6c5fa2864bb264c91167258b3e478fa0",
            "create_time":"2024-01-01 11:11:00",
            "file_name":"111.jpg",
            "share_status":0,
            "pv":1,
            "url":"http://ip/group1/M00/00/00/eBuDxWCfQHSATopyAAV8AJV_1mw866.111",
            "size":"1024",
            "type":"jpg"
        }
    ]
}
处理逻辑

私有文件3

请求URL
URL http://ip/file/ownfile?cmd=pvasc
Type POST
HTTP Version 1.1
Content-Type application/json
请求参数
Param 含义 Rule 是否必须 缺省
token token 同上 必填 NULL
robotid 机器人唯一 ID 不超过32个字符 必填 NULL
count 文件个数 私有文件数量>0 必填 NULL
start 开始位置 必填 NULL
服务示例

返回结果参数说明

名称 含义 规则说明
files 文件结果集 "code":0正常,1失败, "count":当前文件数量, "total":私有文件数量, "robotid":机器人唯一ID, "md5":md5的值, "create_time":创建时间, "file_name":文件名, "share_status":共享状态, "pv":使用次数, "url":URL, "size":文件大小, "type":文件类型

调用接口

json 复制代码
http://ip/file/ownfile?cmd=normal
参数
{
    "count":2,
    "start":0,
    "token":"3a58ca22317e637797f8bcad5c047446",
    "robotid":"ced165163e51e06e01dc44c35fea3eaf"
}
返回结果
{
    "code":0,
    "total":2,
    "files":[
        {
            "robotid":"ced165163e51e06e01dc44c35fea3eaf",
            "md5":"6c5fa2864bb264c91167258b3e478fa0",
            "create_time":"2024-01-01 11:11:00",
            "file_name":"111.jpg",
            "share_status":0,
            "pv":1,
            "url":"http://ip/group1/M00/00/00/eBuDxWCfQHSATopyAAV8AJV_1mw866.111",
            "size":"1024",
            "type":"jpg"
        }
    ]
}
处理逻辑

私有文件4

请求URL
URL http://ip/file/ownfile?cmd=pvdesc
Type POST
HTTP Version 1.1
Content-Type application/json
请求参数
Param 含义 Rule 是否必须 缺省
token token 同上 必填 NULL
robotid 机器人唯一 ID 不超过32个字符 必填 NULL
count 文件个数 私有文件数量>0 必填 NULL
start 开始位置 必填 NULL
服务示例

返回结果参数说明

名称 含义 规则说明
files 文件结果集 "code":0正常,1失败, "count":当前文件数量, "total":私有文件数量, "robotid":机器人唯一ID, "md5":md5的值, "create_time":创建时间, "file_name":文件名, "share_status":共享状态, "pv":使用次数, "url":URL, "size":文件大小, "type":文件类型

调用接口

json 复制代码
http://ip/file/ownfile?cmd=normal
参数
{
    "count":2,
    "start":0,
    "token":"3a58ca22317e637797f8bcad5c047446",
    "robotid":"ced165163e51e06e01dc44c35fea3eaf"
}
返回结果
{
    "code":0,
    "total":2,
    "files":[
        {
            "robotid":"ced165163e51e06e01dc44c35fea3eaf",
            "md5":"6c5fa2864bb264c91167258b3e478fa0",
            "create_time":"2024-01-01 11:11:00",
            "file_name":"111.jpg",
            "share_status":0,
            "pv":1,
            "url":"http://ip/group1/M00/00/00/eBuDxWCfQHSATopyAAV8AJV_1mw866.111",
            "size":"1024",
            "type":"jpg"
        }
    ]
}
处理逻辑

上传文件md5

用于秒传文件的请求。

文件上传的时候:

  • 先调用md5接口判断服务器是否有该文件,如果md5成功则说明服务器有该文件,不需要upload;
  • 如果不成功则调用upload。
请求URL
URL http://ip/file/md5
Type POST
HTTP Version 1.1
Content-Type application/json
请求参数
Param 含义 Rule 是否必须 缺省
token token 同上 必填 NULL
robotid 机器人唯一 ID 不超过32个字符 必填 NULL
md5 md5值 不超过32个字符 必填 NULL
filename 文件名称 不超过128个字符 必填 NULL
服务示例

返回结果参数说明

名称 含义 规则说明
code 结果值 0: 秒传成功 1: 秒传失败 4: token 校验失败 5:文件已存在

调用接口

json 复制代码
http://ip/file/md5
参数
{
    "filename":"ui_bottongroup.h",
    "md5":"a89390d867d5da18c8b1a95908d7c653",
    "token":"3a58ca22317e637797f8bcad5c047446",
    "robotid":"ced165163e51e06e01dc44c35fea3eaf"
}
返回结果
{
    "code":0
}
处理逻辑

每个文件都有一个唯一的 MD5 值(比如 2bf8170b42cc7124b04a8886c83a9c6f),就好比每个人的指 纹都是唯一的一样,效验 MD5 就是用来确保文件在传输过程中未被修改过。

  • 客户端在上传文件之前先将文件的md5码上传到服务器;
  • 服务器判断是否存在这个md5码,如果存在,说明文件存在,则此文件无需再次上传,在此文件的计数器上加1,说明文件多了一个用户共用;
  • 如果服务器没有这个md5码,则说明。传的是新文件,需要上传

上传文件upload

请求URL
URL http://ip/file/upload
Type POST
HTTP Version 1.1
Content-Type application/json
返回结果参数说明
名称 含义 规则说明
code 结果值 0: 秒传成功 1: 上传失败
处理逻辑

共享/删除1

请求 URL
URL http://ip/file/dealfile?cmd=share
Type POST
HTTP Version 1.1
Content-Type application/json
请求参数
Param 含义 Rule 是否必须 缺省
token token 同上 必填 NULL
robotid 机器人唯一 ID 不超过32个字符 必填 NULL
md5 md5值 不超过32个字符 必填 NULL
filename 文件名称 不超过128个字符 必填 NULL
服务示例

返回结果参数说明

名称 含义 规则说明
code 结果值 0: 成功 1: 失败 3: 另外的机器人已经共享 4: token 验证失败

调用接口

json 复制代码
http://ip/file/dealfile?cmd=pv
参数
{
	"filename":"Makefile",
	"md5":"602fdf30db2aacf517badf4565124f51",
	"token":"3a58ca22317e637797f8bcad5c047446",
	"robotid":"ced165163e51e06e01dc44c35fea3eaf"
}
返回结果
{
	"code":0
}
处理逻辑

共享/删除文件2

请求URL
URL http://ip/file/dealfile?cmd=del
Type POST
HTTP Version 1.1
Content-Type application/json
请求参数
Param 含义 Rule 是否必须 缺省
token token 同上 必填 NULL
robotid 机器人唯一 ID 不超过32个字符 必填 NULL
md5 md5值 不超过32个字符 必填 NULL
filename 文件名称 不超过128个字符 必填 NULL
服务示例

返回结果参数说明

名称 含义 规则说明
code 结果值 0: 成功 1: 失败

调用接口

json 复制代码
http://ip/file/dealfile?cmd=del
参数
{
    "filename":"Makefile",
    "md5":"602fdf30db2aacf517badf4565124f51",
    "token":"3a58ca22317e637797f8bcad5c047446",
    "robotid":"ced165163e51e06e01dc44c35fea3eaf"
}
返回结果
{
    "code":0
}
处理逻辑
  • 先判断此文件是否已经分享
  • 判断集合有没有这个文件,如果有,说明别人已经分享此文件(RDS操作)
  • 如果集合没有此元素,可能因为 redis 中没有记录,再从 SQL中查询,如果 SQL也没有,说 明真没有(SQL操作)
  • 如果 SQL有记录,而 RDS没有记录,那么分享文件处理只需要处理 SQL(SQL操作)
  • 如果 RDS有记录,SQL和 RDS都需要处理,删除相关记录

取消共享

请求URL
URL http://ip/file/dealsharefile?cmd=cancel
Type POST
HTTP Version 1.1
Content-Type application/json
请求参数
Param 含义 Rule 是否必须 缺省
robotid 机器人唯一 ID 不超过32个字符 必填 NULL
md5 md5值 不超过32个字符 必填 NULL
filename 文件名称 不超过128个字符 必填 NULL
服务示例

返回结果参数说明

名称 含义 规则说明
code 结果值 0: 成功 1: 失败

调用接口

json 复制代码
http://ip/file/dealsharefile?cmd=cancel
参数
{
    "filename":"ui_buttongroup.h"
    "md5":"a89390d867d5da18c8b1a95908d7c653",
    "robotid":"ced165163e51e06e01dc44c35fea3eaf"
}
返回结果
{
    "code":0
}
处理逻辑
  • 查询共享文件的数量;
  • 如果共享文件数量为1则删除共享文件数量对应的行
  • 如果共享文件数量>1,则更新共享数量文件-1。

转存文件

请求URL
URL http://ip/file/dealsharefile?cmd=save
Type POST
HTTP Version 1.1
Content-Type application/json
请求参数
Param 含义 Rule 是否必须 缺省
robotid 机器人唯一 ID 不超过32个字符 必填 NULL
md5 md5值 不超过32个字符 必填 NULL
filename 文件名称 不超过128个字符 必填 NULL
服务示例

返回结果参数说明

名称 含义 规则说明
code 结果值 0: 成功 1: 失败 5: 文件存在
json 复制代码
http://ip/file/dealsharefile?cmd=save
参数
{
    "filename":"ui_buttongroup.h"
    "md5":"a89390d867d5da18c8b1a95908d7c653",
    "robotid":"ced165163e51e06e01dc44c35fea3eaf"
}
返回结果
{
    "code":0
}
处理逻辑
  • 先查询是个人文件列表是否已经存在该文件;
  • 增加 file_info 表的 count 计数,表是多一个人保存了该文件;
  • 个人的 user_file_list 增加一条文件记录;
  • 更新个人的 user_file_count。

更新共享文件下载计数

请求URL
URL http://ip/file/dealsharefile?cmd=save
Type POST
HTTP Version 1.1
Content-Type application/json
请求参数
Param 含义 Rule 是否必须 缺省
robotid 机器人唯一 ID 不超过32个字符 必填 NULL
md5 md5值 不超过32个字符 必填 NULL
filename 文件名称 不超过128个字符 必填 NULL
服务示例

返回结果参数说明

名称 含义 规则说明
code 结果值 0: 成功 1: 失败 5: 文件存在
json 复制代码
http://ip/file/dealsharefile?cmd=pv
参数
{
    "filename":"ui_buttongroup.h"
    "md5":"a89390d867d5da18c8b1a95908d7c653",
    "robotid":"ced165163e51e06e01dc44c35fea3eaf"
}
返回结果
{
    "code":0
}
处理逻辑
  • 更新share_file_list的pv值;
  • 更新RDS的FILE_PUBLIC_ZSET。

分享文件

请求URL
URL http://ip/file/sharefile?cmd=share
Type POST
HTTP Version 1.1
Content-Type application/json
请求参数
Param 含义 Rule 是否必须 缺省
token token 同上 必填 NULL
robotid 机器人唯一 ID 不超过32个字符 必填 NULL
md5 md5值 不超过32个字符 必填 NULL
filename 文件名称 不超过128个字符 必填 NULL
服务示例

返回结果参数说明

名称 含义 规则说明
code 结果值 0: 成功 1: 失败 4: token验证失败
urlmd5 分享文件标识 取消也要

调用接口

json 复制代码
http://ip/file/sharefile?cmd=share
参数
{
    "filename":"ui_buttongroup.h"
    "md5":"a89390d867d5da18c8b1a95908d7c653",
    "token":"3a58ca22317e637797f8bcad5c047446",
    "robotid":"ced165163e51e06e01dc44c35fea3eaf"
}
返回结果
{
    "code":0,
    "urlmd5":"602fdf30db2aacf517badf4565121234"
}
处理逻辑

新建分组

新建一个MQTT的Topic,用于协作。

请求URL
URL http://ip/msg/newgroup
Type POST
HTTP Version 1.1
Content-Type application/json
请求参数
Param 含义 Rule 是否必须 缺省
token token 同上 必填 NULL
robotid 机器人唯一 ID 不超过32个字符 必填 NULL
maxsize 同组最大数量 >=1 必填 NULL
服务示例

返回结果参数说明

名称 含义 规则说明
code 结果值 0: 成功 1: 失败 4: token验证失败
topic 加密后的topic 失败为空

调用接口

json 复制代码
http://ip/file/msg/newgroup
参数
{
    "token":"3a58ca22317e637797f8bcad5c047446",
    "robotid":"ced165163e51e06e01dc44c35fea3eaf",
    "maxsize":10
}
返回结果
{
    "code":0,
    "topic":"614b0c23f5f4cd3a68ba5581e2169df3"
}
处理逻辑

释放分组

请求 URL
URL http://ip/msg/freegroup
Type POST
HTTP Version 1.1
Content-Type application/json
请求参数
Param 含义 Rule 是否必须 缺省
token token 同上 必填 NULL
robotid 机器人唯一 ID 不超过32个字符 必填 NULL
topic 加密后的topic 不超过32个字符 必填 NULL
服务示例

返回结果参数说明

名称 含义 规则说明
code 结果值 0: 成功 1: 失败 4: token 验证失败 5: 非topic管理员

调用接口

json 复制代码
http://ip/file/msg/freegroup
参数
{
    "token":"3a58ca22317e637797f8bcad5c047446",
    "robotid":"ced165163e51e06e01dc44c35fea3eaf",
    "topic":"614b0c23f5f4cd3a68ba5581e2169df3"
}
返回结果
{
    "code":0,
}
处理逻辑
相关推荐
(⊙o⊙)~哦26 分钟前
linux 解压缩
linux·运维·服务器
牧小七2 小时前
Linux命令---查看端口是否被占用
linux
衍生星球2 小时前
【网络安全】对称密码体制
网络·安全·网络安全·密码学·对称密码
掘根2 小时前
【网络】高级IO——poll版本TCP服务器
网络·数据库·sql·网络协议·tcp/ip·mysql·网络安全
鸡鸭扣3 小时前
虚拟机:3、(待更)WSL2安装Ubuntu系统+实现GPU直通
linux·运维·ubuntu
友友马3 小时前
『 Linux 』HTTP(一)
linux·运维·服务器·网络·c++·tcp/ip·http
2401_872514973 小时前
深入探究HTTP网络协议栈:互联网通信的基石
网络·网络协议·http
chenjingming6664 小时前
windows使用tcpdump.exe工具进行抓包教程
网络·测试工具·tcpdump
记得开心一点嘛4 小时前
在Linux系统上使用Docker部署javaweb项目
linux·运维·docker