课程中的API 数据响应格式不统一是不是不规范呢?如何修改?
大家好!我参考课程把工作中的接口都做完了,现在感觉不是统一的,感到十分困惑。
以用户登录为例
登录成功返回
{
“access_token”: “eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9jZ2VkdS50ZXN0XC9hcGlcL3YxXC9hdXRob3JpemF0aW9ucyIsImlhdCI6MTYwMzE4MDkwMCwiZXhwIjoxNjAzMTg0NTAwLCJuYmYiOjE2MDMxODA5MDAsImp0aSI6IjVRMTRWa1o4Rm1oZEpjTVUiLCJzdWIiOjEsInBydiI6Ijg3ZTBhZjFlZjlmZDE1ODEyZmRlYzk3MTUzYTE0ZTBiMDQ3NTQ2YWEifQ.Bbc-nZZjxiNJL1w63TLMSn3c2kulz4ZWK2jtqVkbRO0”,
“token_type”: “Bearer”,
“expires_in”: 3600
}
返回是三个字段:access_token,token_type, expires_in。
登录失败返回
{
“message”: “用户名或密码错误”
}
返回是一个字段:message。
又举例:
获取分类列表:
返回一个字段:data
获取贴子列表:
返回三个字段:data, links, meta
等等。
因为最近在看另一个课程,
他的接口返回数据全部是这样的格式:
都有两个字段:data,meta
这样前端接收时,就先判断meta中的status,再接收数据,比较方便。
{
"data": {
"total": 5,
"pagenum": 1,
"users": [
{
"id": 25,
"username": "tige117",
"mobile": "18616358651",
"type": 1,
"email": "tige112@163.com",
"create_time": "2017-11-09T20:36:26.000Z",
"mg_state": true, // 当前用户的状态
"role_name": "某管理员"
}
]
},
"meta": {
"msg": "获取成功",
"status": 200
}
}
前面有一个贴子讲到 自定义数据返回格式,问答:dingo API 自定义数据响应格式?
是不是他们的这些才是规范的?
现在我感到很困惑,到底要不要一个个去修改?
请问大家是怎么做的呢?
感谢大家!
关于 LearnKu
首先你要明确一点,接口开发出来是给谁用的,明确了这一点之后,一般为了规范化,开发前就应当协定好统一的接口数据返回格式,例如laravel可以使用
return response()->json(array[])来自定义你们自己协定的数据格式,array[]部分一般情况下也就包括'status','code','message','data',基本上已经可以完全满足绝大对部分的需求。最后,所谓规范是相对的,不是绝对的,你所说的另一个课程也好,帖子也好,他们的规范都只是目前比较适用的能被大多数人接受的规范模型罢了。只要你们自己开发内部协定好,那对你们来说就是规范的,何必纠结于哪种更规范。
最后的最后,如果你已经像课程一样编写了自己的正式业务代码,还是尽快趁代码量迭代起来之前挨个统一改一下吧,后续开发也遵循自己协定好的规范就行了