thinkphp接口开发中如何统一返回数据格式

35次阅读

统一返回格式为:{ “code”: 200, “msg”: “操作成功”, “data”: {} },通过封装api_return函数、使用BaseController基类的success/error方法及自定义异常处理类Handler,实现接口数据格式一致性,提升前后端协作效率与系统可维护性。

thinkphp接口开发中如何统一返回数据格式

在使用ThinkPHP进行接口开发时,统一返回数据格式能提升前后端协作效率,增强接口的可读性和维护性。通常采用固定的结构返回成功或失败信息,包括状态码、提示消息和数据内容。

定义统一返回格式结构

建议所有接口返回的数据遵循如下JSON结构:

{ “code”: 200, “msg”: “操作成功”, “data”: {} }

说明:

  • code:状态码,用于表示请求结果(如200成功,400参数错误,500服务器异常)
  • msg:提示信息,用于前端展示给用户
  • data:实际返回的数据内容,成功时填充,失败时可为空

封装统一返回方法

可以在控制器基类中封装静态方法或使用助手函数来简化返回逻辑。

立即学习PHP免费学习笔记(深入)”;

例如,在

app/common.php

中添加以下函数:

function api_return($code = 200, $msg = ‘操作成功’, $data = null) { return json([ ‘code’ => $code, ‘msg’ => $msg, ‘data’ => $data ]); }

之后在任意控制器中调用:

thinkphp接口开发中如何统一返回数据格式

Opus

AI生成视频工具

thinkphp接口开发中如何统一返回数据格式33

查看详情 thinkphp接口开发中如何统一返回数据格式

class UserController extends Controller { public function info() { $user = User::find(1); if (!$user) { return api_return(404, ‘用户不存在’); } return api_return(200, ‘获取成功’, $user); } }

使用控制器基类统一处理

创建一个基础控制器,如

BaseController

,继承

thinkController

,并在其中定义返回方法:

namespace appcontroller; use thinkController; class BaseController extends Controller { protected function success($data = null, $msg = ‘操作成功’) { return json([‘code’ => 200, ‘msg’ => $msg, ‘data’ => $data]); } protected function error($msg = ‘操作失败’, $code = 400, $data = null) { return json([‘code’ => $code, ‘msg’ => $msg, ‘data’ => $data]); } }

子控制器继承后可直接使用:

class UserController extends BaseController { public function detail() { $user = User::find(input(‘id’)); if (!$user) { return $this->error(‘用户未找到’, 404); } return $this->success($user); } }

结合异常处理自动返回统一格式

通过自定义异常处理类,使系统异常也返回相同格式。

新建

app/exception/Handler.php

namespace appexception; use thinkexceptionHandle; use Throwable; class Handler extends Handle { public function render($request, Throwable $e) { if ($request->isAjax() || strpos($request->header(‘accept’), ‘application/json’) !== false) { return json([ ‘code’ => 500, ‘msg’ => ‘系统繁忙,请稍后再试’, ‘data’ => null ]); } return parent::render($request, $e); } }

并在

config/app.php

中启用:

‘exception_handle’ => ‘appexceptionHandler’,

基本上就这些。通过封装返回方法、使用基类和统一异常处理,可以让整个项目接口返回格式高度一致,便于前端解析和调试。

以上就是thinkphp php js 前端 json ajax app 后端 ai 状态码 php json thinkphp NULL strpos if 封装 Error 继承 接口 class public protected Namespace function this input

thinkphp php js 前端 json ajax app 后端 ai 状态码 php json thinkphp NULL strpos if 封装 Error 继承 接口 class public protected Namespace function this input

text=ZqhQzanResources