解析Thinkphp5怎么实现前后端分离

下面由thinkphp框架教程栏目给大家介绍thinkphp5实现前后端分离,希望对需要的朋友有所帮助!

用Thinkphp5实现纯API开发实现前后端分离

大致步骤如下

1.解决跨域请求问题
2.改变输出数据格式为API常用返回JSON格式
3.自定义异常处理(修改适配API使用)
4.开始强制路由

解决跨域问题
找到 applicationtargs.php扩展定义文件,修改app_init的值

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

// 应用行为扩展定义文件return [    // 应用初始化    'app_init'     => [        'appapiCrossdomainCdom'    ],    // 应用开始    'app_begin'    => [],    // 模块初始化    'module_init'  => [],    // 操作开始执行    'action_begin' => [],    // 视图内容过滤    'view_filter'  => [],    // 日志写入    'log_write'    => [],    // 应用结束    'app_end'      => [],];

在application文件夹目录下apiCrossdomain,在目录下新建Cdom.php代码文件,代码如下

isOptions()){            exit();        }    }}

改变输出数据格式为API常用返回JSON格式
TP5默认输出数据格式为HTML,显然不符合常用API接口的数据规范,在此我们需要做相应的修改。找到application目录下的config.php修改如下配置已避免每次都需要手动 json或者json_encode

知我AI·PC客户端 知我AI·PC客户端

离线运行 AI 大模型,构建你的私有个人知识库,对话式提取文件知识,保证个人文件数据安全

知我AI·PC客户端 0 查看详情 知我AI·PC客户端

// 默认输出类型    'default_return_type'    => 'json',

修改后返回数据时可直接返回如下

  return ['code'=>1];

直接输出json格式的数据
自定义异常处理(修改适配API使用)

TP5原有的异常处理机制如果做api接口的话会造成请求直接崩溃,在异常情况下API接口无法接收到正常的JSON数据而产生错误。为此我们需要自定义TP的异常处理机制。
找到application目录下的config.php配置文件。修改如下选项为

    'exception_handle'       => 'appapiCrossdomainCdomHandle',

找到对应目录,新增CdomHandle.php文件,添加如下代码

getLine();        $first = ($line - 9 > 0) ? $line - 9 : 1;        try {            $contents = file($exception->getFile());            $source   = [                'first'  => $first,                'source' => array_slice($contents, $first - 1, 19),            ];        } catch (Exception $e) {            $source = ['code'=>1];        }        return $source;    }    public function render(Exception $e)    {        $app_debug = Env::get('APP_DEBUG');        //如果是调试模式        if($app_debug)        {            $this->msg = $e->getMessage();            $this->errCode = $e->getCode();            $this->errFile = json($this->getSourceCode($e));            $this->errline = $e->getLine();            if(Env::get('APP_TRACE'))            {                $this->errtrace = $e->getTrace();                $this->errtracestring = $e->getTraceAsString();            }        }        else        {            $result = [                'msg' => $e->getMessage(),                'errFile' => ($this->getSourceCode($e)),                'code' => 999,            ];            return json($result);        }        return json([            'code'=>$this->code,            'msg'=>$this->msg,            'errCode'=>$this->errCode,            'errFile'=>$this->errFile,            'errLine'=>$this->errline,            'errtrace'=>$this->errtrace,            'errtracestring'=>$this->errtracestring        ]);    }}

开启强路由

    // 是否开启路由    'url_route_on'           => true,    // 路由使用完整匹配    'route_complete_match'   => true,    // 是否强制使用路由    'url_route_must'         => true,

这里的Env用法请参考TP手册

BaseException说明:https://docs.python.org/3.1/library/exceptions.html#BaseException

相关推荐:最新的10个thinkphp视频教程

以上就是解析Thinkphp5怎么实现前后端分离的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/627885.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月11日 09:38:28
下一篇 2025年11月11日 09:54:51

相关推荐

发表回复

登录后才能评论
关注微信