次の thinkphp フレームワーク チュートリアル コラムでは、Thinkphp5 のフロントエンドとバックエンドの分離について紹介します。困っている友人の役に立てば幸いです。
Thinkphp5 を使用して純粋な API 開発を実装し、フロントエンドとバックエンドの分離を実現します
一般的な手順は次のとおりです
1. ドメイン リクエストの問題
2. 出力データ形式を一般的に使用される API リターン JSON 形式に変更します
3. 例外処理をカスタマイズします (アダプテーション API の使用法を変更します)
4. 開始強制ルーティング
クロスドメインの問題の解決
# application\targs.php 拡張定義ファイルを見つけて、api\Crossdomain 内の app_init
// 应用行为扩展定义文件 return [ // 应用初始化 'app_init' => [ 'app\api\Crossdomain\Cdom' ], // 应用开始 'app_begin' => [], // 模块初始化 'module_init' => [], // 操作开始执行 'action_begin' => [], // 视图内容过滤 'view_filter' => [], // 日志写入 'log_write' => [], // 应用结束 'app_end' => [], ];
の値を変更します。アプリケーションフォルダーのディレクトリに新しい Cdom.php コードを作成します。コードは次のとおりです。
<?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(); } } }
出力データ形式を共通 API の戻り JSON 形式に変更します
TP5 のデフォルトの出力データ形式は HTML ですが、これは明らかに共通 API インターフェースのデータ仕様に準拠していないため、対応する変更を加える必要があります。アプリケーション ディレクトリで config.php を見つけ、次の構成を変更して、毎回手動で json または json_encode を実行する必要を回避します
// 默认输出类型 'default_return_type' => 'json',
変更後にデータを返す場合は、次の
return ['code'=>1];
を直接返すことができます。データを json 形式で直接出力します。
カスタマイズされた例外処理 (アダプテーション API の使用を変更します)
TP5 独自の例外処理メカニズムは、TP5 として使用するとリクエストが直接クラッシュします。 API インターフェース. 異常な状況では、API インターフェースが正常な JSON データを受信できず、エラーが発生しました。このためには、TP の例外処理メカニズムをカスタマイズする必要があります。
アプリケーション ディレクトリで config.php 構成ファイルを見つけます。次のオプションを
'exception_handle' => 'app\api\Crossdomain\CdomHandle',
に変更します。対応するディレクトリを見つけて、CdomHandle.php ファイルを追加し、次のコードを追加します。
<?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 ]); } }
強力なルーティングを有効にする
// 是否开启路由 '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 がフロントエンドとバックエンドの分離をどのように実現するかを分析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、ThinkPHPの組み込みテストフレームワークについて説明し、ユニットや統合テストなどの主要な機能と、早期のバグ検出とコード品質の向上を通じてアプリケーションの信頼性を高める方法について強調しています。

記事では、リアルタイムの株式市場データフィードにThinkPhpを使用して、セットアップ、データの正確性、最適化、セキュリティ対策に焦点を当てて説明します。

この記事では、パフォーマンスの最適化、ステートレス設計、セキュリティに焦点を当てたサーバーレスアーキテクチャでThinkPhpを使用するための重要な考慮事項について説明します。コスト効率やスケーラビリティなどの利点を強調しますが、課題にも対処します

この記事では、セットアップ、ベストプラクティス、統合方法、および推奨ツールに焦点を当てたThinkPhpマイクロサービスにサービスの発見と負荷分散の実装について説明します。[159文字]。

ThinkPHPのIOCコンテナは、PHPアプリで効率的な依存関係管理のための怠zyなロード、コンテキストバインディング、メソッドインジェクションなどの高度な機能を提供します。

この記事では、ThinkPhpを使用してリアルタイムのコラボレーションツールを構築し、セットアップ、Websocket統合、セキュリティベストプラクティスに焦点を当てて説明します。

ThinkPhpは、軽量のデザイン、MVCアーキテクチャ、および拡張性を備えたSaaSアプリに利益をもたらします。スケーラビリティを向上させ、開発を速め、さまざまな機能を通じてセキュリティを改善します。

この記事では、ThinkPhpとRabbitMQを使用して分散タスクキューシステムの構築を概説し、インストール、構成、タスク管理、およびスケーラビリティに焦点を当てています。重要な問題には、Immedのような一般的な落とし穴を避けるための高可用性の確保が含まれます


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ドリームウィーバー CS6
ビジュアル Web 開発ツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません
