Yii2.0 RESTful API的版本控制的介紹(程式碼範例)

不言
發布: 2023-04-04 17:44:01
轉載
2452 人瀏覽過

這篇文章帶給大家的內容是關於Yii2.0 RESTful API的版本控制的介紹(程式碼範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

之前我寫過兩篇關於 Yii2.0 RESTful API 如何搭建,以及 認證 等處理,但是沒有涉及到版本管理,今天就來談談版本管理如何實現。

索性就從頭開始一步一步搭建吧,但是關於一些概念以及使用本篇就不一一解釋了,可以參考第一篇Yii2.0 RESTful API 基礎配置教程進行配置

安裝Yii2.0

透過Composer 安裝

這是安裝Yii2.0的首選方法。如果你還沒有安裝 Composer,你可以按照這裡的說明進行安裝。

安裝完Composer,運行下面的命令來安裝Composer Asset 插件:

composer global require "fxp/composer-asset-plugin:^1.2.0"
登入後複製

安裝高級的應用程式模板,運行下面的命令:

composer create-project yiisoft/yii2-app-advanced yii-api 2.0.14
登入後複製

#拷貝backend目錄,命名為api

開啟api\config\main.php 修改id,controllerNamespace:

return [ 'id' => 'app-api', 'basePath' => dirname(__DIR__), 'controllerNamespace' => 'api\controllers', ]
登入後複製

初始化進階範本

#不妨在初始化前先看這篇文章

cd advanced php init
登入後複製

開啟common\config\main.php開啟url路由美化規則

'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ ], ],
登入後複製

開啟common\config\bootstrap.php新增以下別名

Yii::setAlias('@api', dirname(dirname(__DIR__)) . '/api');
登入後複製

ok,以上工作準備完畢,接下來進入正題,
關於版本更多介紹可以參考權威指南,這裡不過多解釋(PS:主要我也不會......)

我的理解:
Yii2 的版本你可以理解為不同的模組,每個版本就是一個新的模組,例如常見的v1,v2等。

模組的建構

關於如何產生模組,我們可以使用GII來進行產生.

設定GII

打開api/config/main-local.php 檔案修改如下:

if (!YII_ENV_TEST) { // configuration adjustments for 'dev' environment $config['bootstrap'][] = 'debug'; $config['modules']['debug'] = [ 'class' => 'yii\debug\Module', ]; $config['bootstrap'][] = 'gii'; $config['modules']['gii'] = [ 'class' => 'yii\gii\Module', 'allowedIPs' => ['127.0.0.1', '*'] ]; }
登入後複製

我這裡因為使用的是Homestead ,預設是不允許存取GII 的,所以得加上'allowedIPs' => ; ['127.0.0.1', '*'] ,否則會出現Forbidden (#403), 你可以根據自己的需要來進行配置,或者不配置

生成Modules

瀏覽器中輸入http://your host/gii ,可以看到Module Generator ,點選Start

Modules Class 中輸入:api\modules\v1\Module

Module ID 中輸入v1, (一般會自動輸入)

點選Preview

Yii2.0 RESTful API的版本控制的介紹(程式碼範例)

#最後點選Generate 進行產生

Yii2.0 RESTful API的版本控制的介紹(程式碼範例)

設定模組

開啟api/config/main.php 文件,修改modules

'modules' => [ 'v1'=>[ 'class'=>'api\modules\v1\Module', ], ],
登入後複製

接著修改urlManager

'urlManager' => [ 'enablePrettyUrl' => true, 'enableStrictParsing' => true, 'showScriptName' => false, 'rules' => [ ['class' => 'yii\rest\UrlRule', 'controller' => 'v1/default', 'extraPatterns'=>[ 'GET index'=>'index', ], ], ], ],
登入後複製

基於以上,Yii2.0 RESTFul API 就實現了版本管理,我們可以透過以下地址進行存取:

http://localhost/v1/defaults
登入後複製
多說一點,我上方的地址是已經映射到api/web目錄,請根據自己的實際情況進行設定

開啟剛產生的modules 檔案目錄,可以看到裡面存在一個v1 的目錄,可以看到該目錄還有一個controllers,以及一個views 目錄
,我們剛才造訪的defaults 其實就是這兩個文件,和傳統的web專案一樣控制器渲染視圖

好了,你可能知道了,我們以後的控制器程式碼就放到modules/v1/controllers 裡了

剛才只是預設GII為我們產生的程式碼,因為我們是API,所以views 目錄,我們通常用不到。

新建一個rest 的控制器
在 modules\v1\controllers 下新建UserController


        
登入後複製

修改api/config/main.php 中的urlManager

'urlManager' => [ 'enablePrettyUrl' => true, 'enableStrictParsing' => true, 'showScriptName' => false, 'rules' => [ ['class' => 'yii\rest\UrlRule', 'controller' => 'v1/default', 'extraPatterns'=>[ 'GET index'=>'index', ], ], ['class' => 'yii\rest\UrlRule', 'controller' => 'v1/user', 'extraPatterns'=>[ 'GET index'=>'index', ], ], ], ],
登入後複製

試著訪問下

http://localhost/v1/users/index
登入後複製

ok,以上就是Yii2.0 版本管理的實作方式

格式化回應

##修改api/config/main. php 在components 陣列中加入response

'response' => [ 'class' => 'yii\web\Response', 'on beforeSend' => function ($event) { $response = $event->sender; $response->data = [ 'success' => $response->isSuccessful, 'code' => $response->getStatusCode(), 'message' => $response->statusText, 'data' => $response->data, ]; $response->statusCode = 200; }, ],
登入後複製

以上是Yii2.0 RESTful API的版本控制的介紹(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:segmentfault.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!