这篇文章主要介绍解析Thinkphp5如何实现前后端分离,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

创新互联专注于城北网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供城北营销型网站建设,城北网站制作、城北网页设计、城北网站官网定制、微信平台小程序开发服务,打造城北网络公司原创品牌,更为您提供城北网站排名全网营销落地服务。
用Thinkphp5实现纯API开发实现前后端分离
大致步骤如下
1.解决跨域请求问题
2.改变输出数据格式为API常用返回JSON格式
3.自定义异常处理(修改适配API使用)
4.开始强制路由
解决跨域问题
找到 application\targs.php扩展定义文件,修改app_init的值
// 应用行为扩展定义文件 return [ // 应用初始化 'app_init' => [ 'app\api\Crossdomain\Cdom' ], // 应用开始 'app_begin' => [], // 模块初始化 'module_init' => [], // 操作开始执行 'action_begin' => [], // 视图内容过滤 'view_filter' => [], // 日志写入 'log_write' => [], // 应用结束 'app_end' => [], ];
在application文件夹目录下api\Crossdomain,在目录下新建Cdom.php代码文件,代码如下
isOptions()){
exit();
}
}
}改变输出数据格式为API常用返回JSON格式
TP5默认输出数据格式为HTML,显然不符合常用API接口的数据规范,在此我们需要做相应的修改。找到application目录下的config.php修改如下配置已避免每次都需要手动 json或者json_encode
// 默认输出类型 'default_return_type' => 'json',
修改后返回数据时可直接返回如下
return ['code'=>1];
直接输出json格式的数据
自定义异常处理(修改适配API使用)
TP5原有的异常处理机制如果做api接口的话会造成请求直接崩溃,在异常情况下API接口无法接收到正常的JSON数据而产生错误。为此我们需要自定义TP的异常处理机制。
找到application目录下的config.php配置文件。修改如下选项为
'exception_handle' => 'app\api\Crossdomain\CdomHandle',
找到对应目录,新增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
thinkphp是什么
thinkphp属于一种免费的开发框架,能够用于开发前端网页,最早thinkphp是为了简化开发而产生的,thinkphp同时也是遵循Apache2协议,最初是从Struts演变过来,也把国外一些好的框架模式进行利用,使用面向对象的开发结构,兼容了很多标签库等模式,它能够更方便和快捷的开发和部署应用,当然不仅仅是企业级应用,任何php应用开发都可以从thinkphp的简单、兼容和快速的特性中受益。
以上是“解析Thinkphp5如何实现前后端分离”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!
文章题目:解析Thinkphp5如何实现前后端分离
文章位置:http://www.jxjierui.cn/article/peepio.html


咨询
建站咨询
