Die folgende thinkphp-Framework-Tutorial-Kolumne stellt Ihnen die Front-End- und Back-End-Trennung von Thinkphp5 vor. Ich hoffe, dass sie Freunden, die sie benötigen, hilfreich sein wird!
Verwenden Sie Thinkphp5, um eine reine API-Entwicklung zu implementieren und eine Front-End- und Back-End-Trennung zu erreichen
Die allgemeinen Schritte sind wie folgt: 1. Lösen Sie das domänenübergreifende Anforderungsproblem. 2. Ändern Sie die Ausgabedaten Formatieren Sie das häufig verwendete API-Rückgabe-JSON-Format. 3. Passen Sie die Ausnahmeverarbeitung an (ändern Sie die Verwendung der Anpassungs-API). Wert von app_init
// 应用行为扩展定义文件 return [ // 应用初始化 'app_init' => [ 'app\api\Crossdomain\Cdom' ], // 应用开始 'app_begin' => [], // 模块初始化 'module_init' => [], // 操作开始执行 'action_begin' => [], // 视图内容过滤 'view_filter' => [], // 日志写入 'log_write' => [], // 应用结束 'app_end' => [], ];
Erstellen Sie im Anwendungsordnerverzeichnis die Codedatei apiCrossdomain im Verzeichnis Cdom.php. Der Code lautet wie folgt
<?php namespace 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(); } } }
Die Standardausgabe Das Datenformat von TP5 ist HTML, was offensichtlich nicht den Datenspezifikationen häufig verwendeter API-Schnittstellen entspricht. Hier müssen wir entsprechende Änderungen vornehmen. Suchen Sie config.php im Anwendungsverzeichnis und ändern Sie die folgende Konfiguration, um zu vermeiden, dass jedes Mal manuelles JSON oder JSON_Encode erforderlich ist Benutzerdefinierte Ausnahmebehandlung (an die API-Nutzung angepasste Änderung)
Suchen Sie die Konfigurationsdatei config.php im Anwendungsverzeichnis. Ändern Sie die folgenden Optionen, um
// 默认输出类型 'default_return_type' => 'json',
Suchen Sie das entsprechende Verzeichnis, fügen Sie die Datei CdomHandle.php hinzu und fügen Sie den folgenden Code hinzu return ['code'=>1];
Aktivieren Sie starkes Routing
'exception_handle' => 'app\api\Crossdomain\CdomHandle',
Bitte beachten Sie das TP-Handbuch für die Verwendung von Env hier
<?php namespace 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 ]); } }
Verwandte Empfehlungen:
Die neuesten 10 Thinkphp-Video-Tutorials
Das obige ist der detaillierte Inhalt vonAnalysieren Sie, wie Thinkphp5 die Front-End- und Back-End-Trennung realisiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!