iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >解析Thinkphp5如何实现前后端分离
  • 737
分享到

解析Thinkphp5如何实现前后端分离

2023-06-15 03:06:14 737人浏览 薄情痞子
摘要

这篇文章主要介绍解析ThinkPHP5如何实现前后端分离,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!用Thinkphp5实现纯API开发实现前后端分离大致步骤如下解决跨域请求问题2.改变输出数据格式为api常用返回

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

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

大致步骤如下

解决跨域请求问题
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代码文件,代码如下

<?phpnamespace app\api\Crossdomain;class Cdom{    public function appInit($params)    {        //配置IP白名单 在测试环境下可以为 * 号 生产环境下建议根据实际环境进行修改。        header('Access-Control-Allow-Origin: *');        header("Access-Control-Allow-Headers: token,Origin, X-Requested-With, X_Requested_With,Content-Type, Accept");        header('Access-Control-Allow-Methods: POST,GET,PUT');        if(request()->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文件,添加如下代码

<?phpnamespace app\api\Crossdomain;use think\exception\Handle;use think\Env;use Exception;use MyCLabs\Enum\Enum;class CdomHandle extends Handle{    private $code = 999;    private $msg;    private $errCode;    private $errFile = '';    private $errline = '';    private $errtrace = '';    private $errtracestring = '';    protected function getSourceCode(Exception $exception)    {        // 读取前9行和后9行        $line  = $exception->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如何实现前后端分离”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网PHP编程频道!

--结束END--

本文标题: 解析Thinkphp5如何实现前后端分离

本文链接: https://www.lsjlt.com/news/277418.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 解析Thinkphp5如何实现前后端分离
    这篇文章主要介绍解析Thinkphp5如何实现前后端分离,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!用Thinkphp5实现纯API开发实现前后端分离大致步骤如下解决跨域请求问题2.改变输出数据格式为API常用返回...
    99+
    2023-06-15
  • thinkPHP5前后端分离
    thinkPHP5前后端分离 环境配置并运行起thinkphp安装小皮面板安装phpstorm配置thinkPHP5将文件放入适当位置修改Nginx配置修改配置和伪静态 跨域前端 ...
    99+
    2023-10-11
    php 前端 nginx 1024程序员节
  • SpringSecurity如何实现前后端分离
    这篇文章主要介绍“SpringSecurity如何实现前后端分离”,在日常操作中,相信很多人在SpringSecurity如何实现前后端分离问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SpringSecur...
    99+
    2023-07-05
  • php前后端分离如何实现
    要实现PHP前后端分离,需要使用以下技术和方法:1. 使用前端框架:选择一个前端框架(如React、Vue.js、Angular等)...
    99+
    2023-10-09
    php
  • 如何用php实现前端后台分离
    这篇文章主要讲解了“如何用php实现前端后台分离”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用php实现前端后台分离”吧!构建后台API接口PHP作为一种服务器端脚本语言,相比于Jav...
    99+
    2023-07-05
  • Java项目如何实现前后端分离
    今天就跟大家聊聊有关Java项目如何实现前后端分离,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。构建springboot项目我的目录结构:(结果未按标准书写,仅作说明)不管用什么ID...
    99+
    2023-05-31
    java 前后端分离 ava
  • FastApi+Vue+LayUI如何实现前后端分离
    小编给大家分享一下FastApi+Vue+LayUI如何实现前后端分离,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言在前面的Api开发中,我们使用FastAp...
    99+
    2023-06-25
  • golang前后端分离如何实现交互
    在 Golang 中实现前后端分离的交互可以通过以下几种方式:1. RESTful API:将后端独立的服务,提供 RESTful ...
    99+
    2023-10-20
    golang
  • Flask Vue前后端分离实例分析
    这篇文章主要讲解了“Flask Vue前后端分离实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Flask Vue前后端分离实例分析”吧!vue官网:开源的 Javascript 框架...
    99+
    2023-07-02
  • SpringBoot如何实现前后端分离国际化
    这篇“SpringBoot如何实现前后端分离国际化”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringBoot如何实现...
    99+
    2023-07-05
  • django前后端分离怎么实现
    要实现Django的前后端分离,可以使用Django Rest Framework(DRF)作为后端框架,同时使用一个前端框架(如R...
    99+
    2023-10-09
    django
  • SpringSecurity怎么实现前后端分离
    今天小编给大家分享一下SpringSecurity怎么实现前后端分离的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Sprin...
    99+
    2023-07-05
  • JavaScript怎么实现前后端分离
    本篇内容介绍了“JavaScript怎么实现前后端分离”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 前...
    99+
    2024-04-02
  • 前后端分离之VueJS前端的示例分析
    这篇文章给大家分享的是有关前后端分离之VueJS前端的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言前端用什么框架都可以,这里选择小巧的vuejs。要实现的功能很简单...
    99+
    2024-04-02
  • git前后端分离如何用
    本篇内容介绍了“git前后端分离如何用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、前后端分离的基本概念前后端分离的基本概念是:前端提供...
    99+
    2023-07-06
  • SpringBoot+mybatis+Vue如何实现前后端分离项目
    这篇文章主要为大家展示了“SpringBoot+mybatis+Vue如何实现前后端分离项目”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SpringBoot+mybatis+Vue如何实现前后...
    99+
    2023-06-22
  • 如何实现Docker部署前后端分离项目
    这篇文章给大家介绍如何实现Docker部署前后端分离项目,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、环境准备服务器阿里云服务器 1核+2GB即可软件本次部署采用的是 docker,因此软件环境都在 docker ...
    99+
    2023-06-21
  • SpringSecurity实现前后端分离的示例详解
    目录1. 认证信息改成JSON格式1.1 新建JsonUsernamePasswordAuthenticationFilter1.2 新建JsonUsernamePasswordLo...
    99+
    2023-03-14
    SpringSecurity前后端分离 SpringSecurity分离
  • web前端与后端分离的架构实例分析
    本篇内容主要讲解“web前端与后端分离的架构实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“web前端与后端分离的架构实例分析”吧!一、关于前端的 dat...
    99+
    2024-04-02
  • Springboot实现前后端分离excel下载
    目录Springboot前后端分离excel下载前后端分离Excle下载乱码问题前端请求方式 : ajax请求Springboot前后端分离excel下载 现在公司的技术栈是spri...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作