数据结构
Dux Refine 默认定义了 API 数据规范,您需要根据文档中的说明返回相应的接口格式和字段。
TIP
未来计划加入自定义接口结构转换配置。
基本数据
API 返回的数据需要采用 json
数据格式,接口 URL 应遵循基本的 RESTful API
格式,不管是不是 200 状态码,返回的 json
数据格式都应包含以下字段:
code
状态码,与 HTTP 状态码一致message
消息,自定义返回的消息内容data
数据,返回的消息数据meta
附加数据,可选自定义附加数据
json
{
"code": 200,
"message": "ok",
"data": {
...
},
"meta": {
...
}
}
{
"code": 200,
"message": "ok",
"data": {
...
},
"meta": {
...
}
}
前端发出请求时,会携带以下通用的请求头信息:
Accept-Language
请求语言,API 可以使用该参数返回对应语言的数据或信息。Authorization
用户认证,登录后每次请求都会带上该参数,API 需要自行验证其有效性。
http
Accept-Language: zh
Authorization: Bearer <token>
Accept-Language: zh
Authorization: Bearer <token>
成功消息
API 返回成功消息。
json
{
"code": 200,
"message": "ok",
"data": {}
}
{
"code": 200,
"message": "ok",
"data": {}
}
错误消息
API 返回错误消息。
json
{
"code": 500,
"message": "Error description",
"data": {}
}
{
"code": 500,
"message": "Error description",
"data": {}
}
登录请求
登录时,会将以下 json
参数作为请求体内容。
json
{
"username": "admin",
"password": ""
}
{
"username": "admin",
"password": ""
}
登录成功后,需要返回至少以下字段信息。此外,还可以存储其他额外字段信息,供自定义使用。
json
{
"code": 200,
"message": "ok",
"data": {
"userInfo": {
"username": "admin",
"nickname": "Dux",
"avatar": "http://xxx"
},
"token": "Bearer <token>",
"permission": {}
}
}
{
"code": 200,
"message": "ok",
"data": {
"userInfo": {
"username": "admin",
"nickname": "Dux",
"avatar": "http://xxx"
},
"token": "Bearer <token>",
"permission": {}
}
}
登录失效
登录失效或 Token 验证失败时,需要返回状态码为 401
。
json
{
"code": 401,
"message": "Login failure",
"data": {}
}
{
"code": 401,
"message": "Login failure",
"data": {}
}
用户权限
登录时,后端需要返回 permission
字段作为用户权限。如果该字段为空,则不限制权限。这个权限仅用于前端验证,API 需要自行判断接口权限。权限结构如下:
json
{
"permission": {
"user.list": true,
"user.create": false,
"user.edit": false,
"user.delete": false,
"user.show": false
}
}
{
"permission": {
"user.list": true,
"user.create": false,
"user.edit": false,
"user.delete": false,
"user.show": false
}
}
权限的 key
使用了 资源名.动作
的命名方式,value
表示是否拥有该权限。
列表数据
列表数据使用 GET
请求,基本 URL 如下:
http
GET http://example.test/article
GET http://example.test/article
数据返回分为分页和非分页数据,API 需要返回以下基本格式:
list
数组数据total
数据总数,对于非分页数据,此字段无效
json
{
"code": 200,
"message": "ok",
"data": [
...
],
"meta": {
"total": 100
}
}
{
"code": 200,
"message": "ok",
"data": [
...
],
"meta": {
"total": 100
}
}
对于分页请求,需要使用 page
参数表示页码,如下:
http://example.test/article?page=1
http://example.test/article?page=1
单条数据
单条数据使用 GET
请求,基本 URL 如下:
http
GET http://example.test/article/{id}
GET http://example.test/article/{id}
API 需要返回以下数据:
info
详情数据
json
{
"code": 200,
"message": "ok",
"data": {
...
},
"meta": {
...
}
}
{
"code": 200,
"message": "ok",
"data": {
...
},
"meta": {
...
}
}
创建数据
创建数据使用 POST
请求,基本请求 URL 和数据如下,成功后返回成功消息。
http
POST http://example.test/article
BODY
{
"title": "...",
...
}
POST http://example.test/article
BODY
{
"title": "...",
...
}
编辑数据
编辑数据使用 POST
请求,基本请求 URL 和数据如下,成功后返回成功消息。
http
POST http://example.test/article/{id}
BODY
{
"title": "...",
...
}
POST http://example.test/article/{id}
BODY
{
"title": "...",
...
}
删除数据
删除数据使用 DELETE
请求,基本请求 URL 如下,成功后返回成功消息。
http
DELETE http://example.test/article/{id}
DELETE http://example.test/article/{id}