API 文档 - M1k0t0/N2-Station GitHub Wiki
分为四个大类,INFO
,USER
,AUTH
,CHAT
,下方是对于接口的详细说明。
请求HTTP API时,数据提交为json形式
/api/info
- GET
/api/info/room
- 返回json格式的房间列表
{
"data": [
"流名称":{
"id": "流名称",
"title": "房间标题",
"desc": "房间描述",
"image": "图片url",
"tag": ["tag的内容", "...",],
"status": "几个状态 暂定open / close",
"user": {
"id": "用户uuid",
"name": "用户名",
"email": "邮箱"
},
"time": {
"createTime": 创建时间,
"openTime": 上次开启直播时间,
"stopTime": 上次结束直播时间
}
},
"流名称": { ... },
],
"action": "getRoomList"
}
POST /api/info/room
- 单独返回该房间的信息
data: { "id": "流名称" }
{
"title": "房间标题",
"desc": "房间描述",
"image": "图片url",
"tag": ["tag的内容", "...",],
"room_status": "几个状态 暂定open / close", // cnm都快做完了才发现重名了
"user": {
"id": "用户uuid",
"name": "用户名",
"email": "邮箱"
},
"time": {
"createTime": 创建时间,
"openTime": 上次开启直播时间,
"stopTime": 上次结束直播时间
},
"action": "searchRoom",
"status": "暂定0成功 -1房间不存在 -10参数不足 -11未知错误"
}
GET /api/info/user
- 获取用户列表
{
"data": [
{
"id": "账号的uuid",
"name": "用户名",
"email": "邮箱" //代替avatar
},
{ ... }
],
"action": "getUserList"
}
POST /api/info/user
- 搜索特定用户
data: { "id": "账号的uuid", "name": "用户名", "email": "邮箱" }
{
"id": "账号的uuid", // 三
"name": "用户名", // 选
"email": "邮箱", // 一
"action": "searchUser",
"status": "暂定0成功 -1用户不存在 -10参数不足 -11未知错误"
}
POST /api/info/getLiveInfo
- 获得特定房间的直播信息
临时API,以后可能会做成WS的
data: { "id": "流名称" }
{
"clients": 114514, // 观看人数
"room_status": "open", // 房间开播状态
"bitrate": 1487280, // 直播码率,单位bps
"action": "getLiveInfo",
"status": "暂定0成功 -1房间不存在 -10参数不足 -11未知错误"
}
/api/user/
此部分API都需要通过 Cookie 验证Token Cookie格式为 Authorization: token
GET /api/user/rooms
- 返回json格式的用户已创建的房间列表
{
"data": [
{
"title": "房间标题",
"desc": "房间描述",
"tag": ["tag的内容", "...",],
"status": "几个状态 暂定open / close",
"action": "getUserRoomList"
},
{ ... }
],
"action": "getUserRoomList",
"status": "0成功 -10参数不全 -11未知错误"
}
POST /api/user/createRoom
- 创建房间
data: {
"id": "流名称",
"title": "房间标题",
"desc": "房间描述",
"image": "图片url",
"tag": [tag的数组]
}
{
"action": "createRoom",
"status": "暂定 0成功 -1已存在 -2已到达创建数量上限 -10参数不全 -11未知错误"
}
POST /api/user/deleteRoom
- 删除房间
data: { "id": "流名称" }
{
"action": "deleteRoom",
"status": "暂定 0成功 -1房间不存在 -10参数不全 -11未知错误"
}
POST /api/user/openRoom
- 房间开始直播
data: { "id": "流名称" }
{
"action": "openRoom",
"status": "暂定 0成功 -1房间不存在 -2已到达开启数量上限 -10参数不全 -11未知错误"
}
POST /api/user/closeRoom
- 房间停止直播
data: { "id": "流名称" }
{
"action": "closeRoom",
"status": "暂定 0成功 -1房间不存在 -10参数不全 -11未知错误"
}
POST /api/user/editRoom
- 修改房间信息
与 createRoom 相同
{
"action": "editRoom",
"status": "暂定0成功 -1房间不存在 -10参数不全 -11未知错误"
}
/api/auth/
密码复杂度要求? 暂定8位以上 有字母+数字 尽量前端验证
POST /api/auth/register
- 注册用户
data:{
"email": "邮箱",
"name": "账户名",
"pass": "密码(原文)"
}
{
"action": "register",
"status": "暂定0成功 -1邮箱已存在 -2用户名已存在 -3密码强度不足 -4邀请码错误 -10参数不全 -11未知错误",
"token": "",
"id": ""
}
POST /api/auth/getToken
- 获取Token(登录)
自动把 token 写进 cookie
data:{
"email": "邮箱", // 三
"name": "账户名", // 选
"id": "uuid", // 一
"pass": "明文(密码)"
}
{
"action": "getToken",
"status": "暂定0成功 -1账号或密码错误 -10参数不全 -11未知错误"
}
GET /api/auth/destroyToken
- 使Token失效(登出)
在Cookie提供有效token
{
"action": "destroyToken",
"status": "暂定0成功 -1token有误 -10参数不全 -11未知错误"
}
POST /api/auth/changeInfo
- 更改账户信息
在Cookie提供有效token
data:{
"email":"", // 可选
"name":"" // 可选
}
{
"action": "changeInfo",
"status": "暂定0成功 -10参数不全 -11未知错误"
}
POST /api/auth/changePassword
- 更改密码
在Cookie提供有效token
data: {
"oldPass": "密码(原文)",
"newPass": "密码(原文)"
}
{
"action": "changePassword",
"status": "暂定0成功 -1旧密码错误 -10参数不全 -11未知错误"
}
Reset太麻烦 先设计成人工
/api/chat/:room
消息结构:<消息类型> <发起用户>[;消息体]
这个api下的所有请求都会被升级为ws协议
当前api协议处于暂定阶段,未来遇到问题可能会大幅修改。
message 消息
- 来自客户端的聊天信息
发送者的前端并不需要立刻渲染该消息,等待服务器的推送指令后再显示即可。
chat 用户名;消息
- 服务端向客户端推送消息
接收到的第一个";"被视为分隔符,之后的被视为消息中的内容。
如果用户名是"0",则代表它是从服务器发来的公告消息。
members 人数
- 服务器向客户端同步房间人数
只有加入房间的时候会发。
join 用户名;当前人数
- 新客户端加入
其他客户端可自定向用户渲染的加入提示消息。
leave 用户名;当前人数
- 客户端退出
其他客户端可自定向用户渲染的退出提示消息。