chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,431 @@
|
||||
---
|
||||
id: api
|
||||
title: 接口
|
||||
sidebar_label: 接口
|
||||
---
|
||||
|
||||
## 如何调用接口
|
||||
|
||||
fiora 后端基于 socket.io, 首先需要与后端建立连接
|
||||
|
||||
```js
|
||||
import IO from 'socket.io-client';
|
||||
const socket = new IO(serverAddrress, options);
|
||||
```
|
||||
|
||||
接口调用格式为
|
||||
|
||||
```js
|
||||
socket.emit(event, data, callback);
|
||||
```
|
||||
|
||||
参数说明
|
||||
|
||||
- event {string} 接口名/事件名
|
||||
- data {object} 接口入参
|
||||
- callback {string|object => void} 接口回调, 返回 string 表示接口失败, string 内容为失败原因, 反正 object 表示接口成功, 里面包含返回数据
|
||||
|
||||
## 返回数据结构定义
|
||||
|
||||
### User
|
||||
|
||||
```js
|
||||
{
|
||||
_id, // {string} id
|
||||
username, // {string} 用户名
|
||||
avatar, // {string} 头像
|
||||
groups, // {[Group]} 群组列表
|
||||
friends, // {[User]} 好友列表
|
||||
token, // {string} 免密登录token
|
||||
isAdmin, // {boolean} 是否为管理员
|
||||
}
|
||||
```
|
||||
|
||||
### Group
|
||||
|
||||
```js
|
||||
{
|
||||
_id, // {string} id
|
||||
name, // {string} 群组名
|
||||
avatar, // {string} 头像
|
||||
creator, // {User ID} 群主id
|
||||
isDefault, // {boolean} 是否为默认群
|
||||
members, // {[User]} 成员列表
|
||||
messages, // {[Message]} 消息列表
|
||||
}
|
||||
```
|
||||
|
||||
### Message
|
||||
|
||||
```js
|
||||
{
|
||||
_id, // {string} id
|
||||
from, // {User} 发送者
|
||||
to, // {string} 群聊: 群id, 私聊: 两人id拼接, 按字符串比较, 小的在前
|
||||
type, // {string} 消息类型 ['text', 'image', 'code', 'invite']
|
||||
content, // {string} 消息内容
|
||||
}
|
||||
```
|
||||
|
||||
## 接口列表
|
||||
|
||||
### 用户注册
|
||||
|
||||
```js
|
||||
socket.emit(
|
||||
'register',
|
||||
{
|
||||
username, // {string} 用户名
|
||||
password, // {string} 密码
|
||||
os, // {string} 操作系统
|
||||
browser, // {string} 浏览器
|
||||
environment, // {string} 环境信息
|
||||
},
|
||||
(user) => {}, // {User} 用户数据
|
||||
);
|
||||
```
|
||||
|
||||
### 用户登录
|
||||
|
||||
```js
|
||||
socket.emit(
|
||||
'login',
|
||||
{
|
||||
username, // {string} 用户名
|
||||
password, // {string} 密码
|
||||
os, // {string} 操作系统
|
||||
browser, // {string} 浏览器
|
||||
environment, // {string} 环境信息
|
||||
},
|
||||
(user) => {}, // {User} 用户数据
|
||||
);
|
||||
```
|
||||
|
||||
### 免密登录 / 断线重连
|
||||
|
||||
```js
|
||||
socket.emit(
|
||||
'loginByToken',
|
||||
{
|
||||
token, // {string} 免密登录token
|
||||
os, // {string} 操作系统
|
||||
browser, // {string} 浏览器
|
||||
environment, // {string} 环境信息
|
||||
},
|
||||
(user) => {}, // {User} 用户数据
|
||||
);
|
||||
```
|
||||
|
||||
### 游客登录
|
||||
|
||||
游客仅能获取到默认群组
|
||||
|
||||
```js
|
||||
socket.emit(
|
||||
'guest',
|
||||
{
|
||||
os, // {string} 操作系统
|
||||
browser, // {string} 浏览器
|
||||
environment, // {string} 环境信息
|
||||
},
|
||||
(defaultGroup) => {}, // {Group} 默认群组数据
|
||||
);
|
||||
```
|
||||
|
||||
### 修改头像
|
||||
|
||||
```js
|
||||
socket.emit(
|
||||
'changeAvatar',
|
||||
{
|
||||
avatar, // {string} 新头像url
|
||||
},
|
||||
() => {}, // {Object} 返回空对象
|
||||
);
|
||||
```
|
||||
|
||||
### 添加好友
|
||||
|
||||
```js
|
||||
socket.emit(
|
||||
'addFriend',
|
||||
{
|
||||
userId, // {User ID} 目标的id
|
||||
},
|
||||
(friend) => {}, // {User} 好友信息
|
||||
);
|
||||
```
|
||||
|
||||
### 删除好友
|
||||
|
||||
```js
|
||||
socket.emit(
|
||||
'deleteFriend',
|
||||
{
|
||||
userId, // {User ID} 目标的id
|
||||
},
|
||||
() => {}, // {Object} 返回空对象
|
||||
);
|
||||
```
|
||||
|
||||
### 修改密码
|
||||
|
||||
```js
|
||||
socket.emit(
|
||||
'changePassword',
|
||||
{
|
||||
oldPassword, // {string} 旧密码
|
||||
newPassword, // {string} 新密码
|
||||
},
|
||||
() => {}, // {Object} 返回空对象
|
||||
);
|
||||
```
|
||||
|
||||
### 修改用户名
|
||||
|
||||
```js
|
||||
socket.emit(
|
||||
'changeUsername',
|
||||
{
|
||||
username, // {string} 新用户名
|
||||
},
|
||||
() => {}, // {Object} 返回空对象
|
||||
);
|
||||
```
|
||||
|
||||
### 重置指定用户密码
|
||||
|
||||
仅管理员可调用
|
||||
|
||||
```js
|
||||
socket.emit(
|
||||
'resetUserPassword',
|
||||
{
|
||||
username, // {string} 新用户名
|
||||
},
|
||||
(data) => { // {Object} 返回数据
|
||||
data.newPassword, // {string} 新密码
|
||||
},
|
||||
);
|
||||
```
|
||||
|
||||
### 发送消息
|
||||
|
||||
通过 to 字段判断是发送给群, 还是发送给个人
|
||||
发送群的话, to 就是群 id
|
||||
发送个人的话, to 就是两个人的 id 拼接, 按字符串比较结果, 小的在前大的在后
|
||||
|
||||
```js
|
||||
socket.emit(
|
||||
'sendMessage',
|
||||
{
|
||||
to, // {string} 目标群组, 或者俩用户id拼接结果
|
||||
type, // {string} 消息类型
|
||||
content, // {string} 消息内容
|
||||
},
|
||||
(message) => {}, // {Message} 新消息
|
||||
);
|
||||
```
|
||||
|
||||
### 获取联系人最后消息
|
||||
|
||||
```js
|
||||
socket.emit(
|
||||
'getLinkmansLastMessages',
|
||||
{
|
||||
linkmans, // {[string]} 联系人id列表, 与to同规则
|
||||
},
|
||||
(messages) => {}, // {object} 所有联系人的最后消息, key: 联系人id, value: [Message] 消息列表
|
||||
);
|
||||
```
|
||||
|
||||
### 获取联系人历史消息
|
||||
|
||||
```js
|
||||
socket.emit(
|
||||
'getLinkmanHistoryMessages',
|
||||
{
|
||||
linkmanId, // {string} 联系人id
|
||||
existCount, // {number} 已有消息数量
|
||||
},
|
||||
(messages) => {}, // {[Message]} 消息列表
|
||||
);
|
||||
```
|
||||
|
||||
### 获取默认群组的历史消息
|
||||
|
||||
不需要登录态
|
||||
|
||||
```js
|
||||
socket.emit(
|
||||
'getDefaultGroupHistoryMessages',
|
||||
{
|
||||
existCount, // {number} 已有消息数量
|
||||
},
|
||||
(messages) => {}, // {[Message]} 消息列表
|
||||
);
|
||||
```
|
||||
|
||||
### 创建群组
|
||||
|
||||
```js
|
||||
socket.emit(
|
||||
'createGroup',
|
||||
{
|
||||
name, // {string} 群组名
|
||||
},
|
||||
(group) => {}, // {Group} 新创建的群组
|
||||
);
|
||||
```
|
||||
|
||||
### 加入群组
|
||||
|
||||
```js
|
||||
socket.emit(
|
||||
'joinGroup',
|
||||
{
|
||||
groupId, // {Group ID} 目标群id
|
||||
},
|
||||
(group) => {}, // {Group} 新创建的群组
|
||||
);
|
||||
```
|
||||
|
||||
### 退出群组
|
||||
|
||||
```js
|
||||
socket.emit(
|
||||
'leaveGroup',
|
||||
{
|
||||
groupId, // {Group ID} 目标群id
|
||||
},
|
||||
() => {}, // {object} 返回空数据
|
||||
);
|
||||
```
|
||||
|
||||
### 获取群组在线用户列表
|
||||
|
||||
```js
|
||||
socket.emit(
|
||||
'getGroupOnlineMembers',
|
||||
{
|
||||
groupId, // {Group ID} 目标群id
|
||||
},
|
||||
(users) => {}, // {[User]} 在线用户列表
|
||||
);
|
||||
```
|
||||
|
||||
### 获取默认群组在线用户列表
|
||||
|
||||
```js
|
||||
socket.emit(
|
||||
'getDefaultGroupOnlineMembers',
|
||||
{},
|
||||
(users) => {}, // {[User]} 在线用户列表
|
||||
);
|
||||
```
|
||||
|
||||
### 修改群头像
|
||||
|
||||
```js
|
||||
socket.emit(
|
||||
'changeGroupAvatar',
|
||||
{
|
||||
groupId, // {Group ID} 目标群id
|
||||
avatar, // {string} 新头像url
|
||||
},
|
||||
() => {}, // {object} 返回空数据
|
||||
);
|
||||
```
|
||||
|
||||
### 获取七牛前端文件上传 token
|
||||
|
||||
```js
|
||||
socket.emit(
|
||||
'uploadToken',
|
||||
{ },
|
||||
(data) => {
|
||||
// 服务端支持七牛
|
||||
data.token, // 上传token
|
||||
data.urlPrefix, // 文件上传后的路径前缀
|
||||
|
||||
// 服务端不支持七牛
|
||||
data.useUploadFile, // 不支持上传七牛, 需要客户端调用 uploadFile 上传文件到服务端
|
||||
},
|
||||
);
|
||||
```
|
||||
|
||||
### 搜索用户/群组
|
||||
|
||||
```js
|
||||
socket.emit(
|
||||
'search',
|
||||
{
|
||||
keywords, // {string} 搜索关键字
|
||||
},
|
||||
(data) => {
|
||||
data.users, // {[User]} 命中的用户
|
||||
data.groups, // {[Group]} 命中的群组
|
||||
},
|
||||
);
|
||||
```
|
||||
|
||||
### 搜索表情包
|
||||
|
||||
```js
|
||||
socket.emit(
|
||||
'searchExpression',
|
||||
{
|
||||
keywords, // {string} 搜索关键字
|
||||
},
|
||||
(imageUrls) => {}, // {[string]} 图片列表
|
||||
);
|
||||
```
|
||||
|
||||
### 获取百度语言合成 token
|
||||
|
||||
```js
|
||||
socket.emit(
|
||||
'getBaiduToken',
|
||||
{ },
|
||||
(data) => {
|
||||
data.token, // {string} token
|
||||
},
|
||||
);
|
||||
```
|
||||
|
||||
### 封禁用户
|
||||
|
||||
```js
|
||||
socket.emit(
|
||||
'sealUser',
|
||||
{
|
||||
username, // {string} 要封禁的用户名
|
||||
},
|
||||
() => {}, // {object} 返回空数据
|
||||
);
|
||||
```
|
||||
|
||||
### 获取封禁用户列表
|
||||
|
||||
```js
|
||||
socket.emit(
|
||||
'getSealList',
|
||||
{},
|
||||
(users) => {}, // {[string]} 被封禁的用户名列表
|
||||
);
|
||||
```
|
||||
|
||||
### 上传文件到服务端
|
||||
|
||||
```js
|
||||
socket.emit(
|
||||
'uploadFile',
|
||||
{
|
||||
fileName, // {string} 文件名
|
||||
file, // {blob} 文件内容, blob格式
|
||||
},
|
||||
(data) => {
|
||||
data.url, // 文件url
|
||||
},
|
||||
);
|
||||
```
|
||||
Reference in New Issue
Block a user