🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 前后端数据通讯接口规范 > 为了保证前后端数据交接更加便捷,减少不必要的沟通.前端后通讯依照以下规范执行. 前端根据请求状态统一处理错误 ## 后端返回数据 ### 格式统一 这里指的是`content-type` 为 `application/json` 1.Thinkphp内置处理函数 ``` return json($data); // 成功返回 return json($data,404|401) // 错误返回 ``` 通常情况下401在后台也是在构造函数统一处理的,但是构造函数无法使用return 所以可以使用以下方案 ``` header("HTTP/1.1 401 Not Found"); // 如果是404 改成404即可 header("Status: 401 Not Found"); header('Content-type: application/json; charset=utf-8'); exit(); ``` 2 微擎 微擎没有内置助手函数,可以使用以下方法实现,也可以根据使用频率自己封装. 200返回 ``` header('Content-Type: application/json'); echo json_encode($data); ``` 404|401返回 ``` http_response_code(404|401); header('Content-Type: application/json'); echo json_encode($data); ``` ### 状态码统一 状态码全部放在`返回头`里面也就是http请求的`status` 现制作以下状态规范,如有补充再添加. | 状态 | 描述 | | --- | --- | | 200 | 成功 | | 404 | 失败/错误/验证验权不通过 | | 401 | 未登录访问 | ### 返回内容 请注意,不需要在body中返回status #### 对于成功请求,返回请求后数据库的数据,比如用户注册 ``` { "username":"张三", "age":"12", ... } ``` 比如列表 ``` { "page":"1", "curent":"1", "total":"30", "data":[ { "username":"张三", "age":"12", ... } ] ... } ``` #### 对于更新,状态修改返回修改结果,比如点赞 ``` { "fav_result":1 // 这里面的1 表示 数据库修改的条目 比如 fav_result = Post->update($data); } ``` #### 对于错误,返回404 并返回错误原因,必要时可以添加额外数据 ``` { "message":"用户名未填写", "validate":{ "username":"用户名未填写" } } ``` 类型:json