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

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,
}
处理逻辑
相关推荐
柒烨带你飞7 分钟前
路由器转发数据报的封装过程
网络·智能路由器
o(╥﹏╥)29 分钟前
linux(ubuntu )卡死怎么强制重启
linux·数据库·ubuntu·系统安全
娶不到胡一菲的汪大东34 分钟前
Ubuntu概述
linux·运维·ubuntu
Yuan_o_1 小时前
Linux 基本使用和程序部署
java·linux·运维·服务器·数据库·后端
东方隐侠安全团队-千里1 小时前
网安瞭望台第17期:Rockstar 2FA 故障催生 FlowerStorm 钓鱼即服务扩张现象剖析
网络·chrome·web安全
那就举个栗子!1 小时前
Ubuntu 20.04下Kinect2驱动环境配置与测试【稳定无坑版】
linux·ubuntu
灯火不休➴1 小时前
[Xshell] Xshell的下载安装使用、连接linux、 上传文件到linux系统-详解(附下载链接)
linux·运维·服务器
Lukea111 小时前
【新教程】Ubuntu server 24.04配置无线网WiFi
linux·ubuntu·教程
小峰编程1 小时前
独一无二,万字详谈——Linux之文件管理
linux·运维·服务器·云原生·云计算·ai原生
卜及中1 小时前
【Linux】资源隔离机制 — 命名空间(Namespace)详解
linux·服务器·php