接口模型.md
7.7 KB
机会导向管理后台接口(非正式版)
全局统一设定
请求头指定要求的字段
字段 | 说明 |
---|---|
x-mmm-accesstoken | 发起请求时使用时校验用 token |
x-mmm-refreshtoken | 刷新 token 时使用的 token |
- 备注 :token 使用 jwt 进行处理.其中包含有 user_id、company_id 的数据,登录时获取
token 机制描述
token 的响应内容
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NzYwNTM2OTAsImlhdCI6MTU3NjA1MTg4OCwiaXNzIjoibW1tX29wcG1nIiwibmJmIjoxNTc2MDUxODg4LCJ1aWQiOjEwLCJjb21wYW55X2lkIjoyfQ.R056B306_vO4UKfMRalncFULE5Z0phN4WOhS9PMwydc",
"expires_in": 1576053688,
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NzYwNTU0OTAsImlhdCI6MTU3NjA1MTg4OCwiaXNzIjoibW1tX29wcG1nIiwibmJmIjoxNTc2MDUxODg4LCJ1aWQiOjEwLCJjb21wYW55X2lkIjoyfQ.OY54QdDwAq2B1NPnAmHkSxy_KvhktmZA2boSlcSSfoU",
"refresh_expires": 1576055488
}
客户端可本地存储该内容数据。
- access_token 对应请求头的 x-mmm-accesstoken。expires_in 指的是 access_token 的到期时间(时间戳),客户端可以依此判断 access_token 到期时间,然后决定是否调用接口刷新 token。
- refresh_token 对应请求头的 x-mmm-refreshtoken。refresh_expires 指的是 refresh_token 的到期时间(时间戳),客户端可以依此判断 refresh_token 到期时间,然后决定是否退出重新登录。
- 刷新 toke 的依据是 refresh_token,如果 refresh_token 过期失效则只能退出系统重新登录。
- 为应对客户端未主动刷新 token 的情况。当服务端发现 access_token 过期且 refresh_token 未过期时返回错误码【10026】,并附带刷新后的 token,影响的内容格式同上,客户端可依此刷新请求头。当服务端发现 refresh_token 过期时返回错误码【10024】,客户需要退出重新登录。
通用响应结构
{
"code": "错误码字符串",
"msg": "错误描述字符串",
"data": {
"xxx": "any"
}
}
- 备注:data 中的内容根据各接口实际情况确定
认证相关
登录
- 请求路径 :/auth/login
- 请求方式 :POST
- 请求 json:
{
"account": "账号",
"password": "密码"
}
- 响应 json
{
"code": "00000",
"msg": "成功",
"data": {
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NzYwNTM2OTAsImlhdCI6MTU3NjA1MTg4OCwiaXNzIjoibW1tX29wcG1nIiwibmJmIjoxNTc2MDUxODg4LCJ1aWQiOjEwLCJjb21wYW55X2lkIjoyfQ.R056B306_vO4UKfMRalncFULE5Z0phN4WOhS9PMwydc",
"expires_in": 1576053688,
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NzYwNTU0OTAsImlhdCI6MTU3NjA1MTg4OCwiaXNzIjoibW1tX29wcG1nIiwibmJmIjoxNTc2MDUxODg4LCJ1aWQiOjEwLCJjb21wYW55X2lkIjoyfQ.OY54QdDwAq2B1NPnAmHkSxy_KvhktmZA2boSlcSSfoU",
"refresh_expires": 1576055488
}
}
- 备注:该请求无需指定请求头
刷新 token
- 请求路径 :/v1/auth/refresh_token
- 请求方式 :get
- 请求 json:
- 响应 json
{
"code": "00000",
"msg": "成功",
"data": {
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NzYwNTM2OTAsImlhdCI6MTU3NjA1MTg4OCwiaXNzIjoibW1tX29wcG1nIiwibmJmIjoxNTc2MDUxODg4LCJ1aWQiOjEwLCJjb21wYW55X2lkIjoyfQ.R056B306_vO4UKfMRalncFULE5Z0phN4WOhS9PMwydc",
"expires_in": 1576053688,
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NzYwNTU0OTAsImlhdCI6MTU3NjA1MTg4OCwiaXNzIjoibW1tX29wcG1nIiwibmJmIjoxNTc2MDUxODg4LCJ1aWQiOjEwLCJjb21wYW55X2lkIjoyfQ.OY54QdDwAq2B1NPnAmHkSxy_KvhktmZA2boSlcSSfoU",
"refresh_expires": 1576055488
}
}
- 备注:无
切换公司
- 请求路径 :/v1/auth/change_company
- 请求方式 :post
- 请求 json:
{
"company_id": 2
}
- 响应 json
{
"code": "00000",
"msg": "成功",
"data": {
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NzYwNTM2OTAsImlhdCI6MTU3NjA1MTg4OCwiaXNzIjoibW1tX29wcG1nIiwibmJmIjoxNTc2MDUxODg4LCJ1aWQiOjEwLCJjb21wYW55X2lkIjoyfQ.R056B306_vO4UKfMRalncFULE5Z0phN4WOhS9PMwydc",
"expires_in": 1576053688,
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NzYwNTU0OTAsImlhdCI6MTU3NjA1MTg4OCwiaXNzIjoibW1tX29wcG1nIiwibmJmIjoxNTc2MDUxODg4LCJ1aWQiOjEwLCJjb21wYW55X2lkIjoyfQ.OY54QdDwAq2B1NPnAmHkSxy_KvhktmZA2boSlcSSfoU",
"refresh_expires": 1576055488
}
}
- 备注:切换公司实际是变更 token 信息
公告
添加公告
- 请求路径 :/v1/bulletin/add
- 请求方式 :post
- 请求 json:
{
"type":2,
"title":"标题",
"content":"公告内容",
"allow_close":0,
"allow_condition":3,
"question_switch":1,
"receiver":["1","2"],
"question":
{
"id":1,
"type":1,
"title":"今天星期几?",
"content":[
{
"id":1,
"content":"星期1"
},
{
"id":2,
"content":"星期2"
}
]
},
"cover":{
"path":"/xx/xx.img",
"w":50,
"h":70
}
}
obj.type 公告类型(1图+跳转链接、2纯文本)
obj.title 标题
obj.content 公告内容
obj.allow_close 允许关闭公告(0允许,1禁止)
obj.allow_condition 关闭条件 (1(bit 0):公告内容查看完 2(bit 1):回答完问题)
obj.question_switch 设置问题开关 (是否有问题) 1:是 0:否
obj.receiver 接收者
obj.question.type 类型:0-单选,1-多选
obj.question.title 标题
obj.question.content 问题选项
obj.cover 封面
- 响应 json
{
"code": "00000",
"msg": "成功",
"data": {}
}
公告列表
- 请求路径 :/v1/bulletin/list
- 请求方式 :post
- 请求 json:
{
"page":1,
"page_size":20,
"status":0
}
obj.status 状态 0-所有 1-下架 2-上架
- 响应 json
{
"code": "00000",
"msg": "成功",
"data": {
"list": [
{
"id": 5,
"type": 2,
"title": "测试公告",
"status": 1,
"receiver": [
{
"id": 1,
"name": "Jennifer Clark"
},
{
"id": 2,
"name": "邓娱婷1208"
}
],
"time": "2019-12-11 17:11:43"
}
],
"Total": 2
}
}
公告详情
- 请求路径 :/v1/bulletin/:id
- 请求方式 :get
- 请求 json:
{
}
obj.status 状态 0-所有 1-下架 2-上架
- 响应 json
{
"code": "00000",
"msg": "成功",
"data": {
"id": 5,
"type": 2,
"title": "测试公告",
"content": "今天发布了一则公告",
"allow_close": 0,
"allow_condition": 3,
"question_switch": 1,
"receiver": [
{
"id": 1,
"name": "Jennifer Clark"
},
{
"id": 2,
"name": "邓娱婷1208"
}
],
"question": {
"id": 4,
"type": 1,
"title": "今天星期几?",
"content": [
{
"id": 1,
"content": "星期1"
},
{
"id": 2,
"content": "星期2"
}
]
},
"cover": {
"path": "/xx/xx.img",
"h": 70,
"w": 50
}
}
}
公告更新
- 请求路径 :/v1/bulletin/update
- 请求方式 :post
- 请求 json:
{
"id":3,
"type":2,
"title":"测试公告3",
"content":"今天发布了一则公告3",
"allow_close":0,
"allow_condition":2,
"question_switch":1,
"receiver":["1","2","3"],
"question":
{
"id":2,
"type":1,
"title":"今天星期几?",
"content":[
{
"id":1,
"content":"星期2"
},
{
"id":2,
"content":"星期3"
}
]
},
"cover":{
"path":"/xx/xx.img",
"w":50,
"h":70
}
}
- 响应 json
{
"code": "00000",
"msg": "成功",
"data": null
}