摘要:之版本控制之前我寫過兩篇關(guān)于如何搭建,以及認(rèn)證等處理,但是沒有涉及到版本管理,今天就來(lái)談?wù)劙姹竟芾砣绾螌?shí)現(xiàn)。如果你還沒有安裝,你可以按照這里的說明進(jìn)行安裝。
Yii2.0 RESTful API 之版本控制
之前我寫過兩篇關(guān)于 Yii2.0 RESTful API 如何搭建,以及 認(rèn)證 等處理,但是沒有涉及到版本管理,今天就來(lái)談?wù)劙姹竟芾砣绾螌?shí)現(xiàn)。
索性就從頭開始一步一步搭建吧,但是關(guān)于一些概念以及使用本篇就不一一解釋了,可以參考 第一篇 Yii2.0 RESTful API 基礎(chǔ)配置教程 進(jìn)行配置
安裝Yii2.0 通過 Composer 安裝這是安裝Yii2.0的首選方法。如果你還沒有安裝 Composer,你可以按照這里的說明進(jìn)行安裝。
安裝完 Composer,運(yùn)行下面的命令來(lái)安裝 Composer Asset 插件:
composer global require "fxp/composer-asset-plugin:^1.2.0"
安裝高級(jí)的應(yīng)用程序模板,運(yùn)行下面的命令:
composer create-project yiisoft/yii2-app-advanced yii-api 2.0.14拷貝backend目錄,命名為api
打開apiconfigmain.php 修改id,controllerNamespace:
return [ "id" => "app-api", "basePath" => dirname(__DIR__), "controllerNamespace" => "apicontrollers", ]初始化高級(jí)模板
在初始化之前不妨先看下這篇文章
cd advanced php init
打開commonconfigmain.php開啟url路由美化規(guī)則
"urlManager" => [ "enablePrettyUrl" => true, "showScriptName" => false, "rules" => [ ], ],
打開commonconfigootstrap.php添加以下別名
Yii::setAlias("@api", dirname(dirname(__DIR__)) . "/api");
ok,以上工作準(zhǔn)備完畢,接下來(lái)進(jìn)入正題,
關(guān)于版本更多介紹可以參考 權(quán)威指南 ,這里不過多解釋(PS:主要我也不會(huì)......)
我的理解:
Yii2 的版本你可以理解為不同的模塊,每一個(gè)版本就是一個(gè)新的模塊,比如常見的v1,v2等。
關(guān)于如何生成模塊,我們可以使用GII來(lái)進(jìn)行生成.
配置 GII打開 api/config/main-local.php 文件 修改如下:
if (!YII_ENV_TEST) { // configuration adjustments for "dev" environment $config["bootstrap"][] = "debug"; $config["modules"]["debug"] = [ "class" => "yiidebugModule", ]; $config["bootstrap"][] = "gii"; $config["modules"]["gii"] = [ "class" => "yiigiiModule", "allowedIPs" => ["127.0.0.1", "*"] ]; }
我這里因?yàn)槭褂玫氖?Homestead ,默認(rèn)是不允許訪問 GII 的,所以得加上 "allowedIPs" => ["127.0.0.1", "*"] ,否則會(huì)出現(xiàn) Forbidden (#403), 你可以根據(jù)自己的需要來(lái)進(jìn)行配置,或者不配置
生成Modules瀏覽器中輸入 http://your host/gii ,可以看到 Module Generator ,點(diǎn)擊 Start
Modules Class 中輸入:apimodulesv1Module
Module ID 中輸入v1,(一般會(huì)自動(dòng)輸入)
點(diǎn)擊 Preview
最后點(diǎn)擊 Generate 進(jìn)行生成
配置模塊打開 api/config/main.php 文件,修改 modules
"modules" => [ "v1"=>[ "class"=>"apimodulesv1Module", ], ],
接著修改 urlManager
"urlManager" => [ "enablePrettyUrl" => true, "enableStrictParsing" => true, "showScriptName" => false, "rules" => [ ["class" => "yii estUrlRule", "controller" => "v1/default", "extraPatterns"=>[ "GET index"=>"index", ], ], ], ],
基于以上,Yii2.0 RESTFul API 就實(shí)現(xiàn)了版本管理,我們可以通過如下地址進(jìn)行訪問:
http://localhost/v1/defaults
多說一點(diǎn),我上方的地址是已經(jīng)映射到api/web目錄,請(qǐng)根據(jù)自己的實(shí)際情況進(jìn)行配置
打開剛生成的 modules 文件目錄,可以看到里面存在一個(gè) v1 的目錄,可以看到該目錄還有一個(gè)controllers,以及一個(gè) views 目錄
,我們剛才訪問的 defaults 其實(shí)就是這兩個(gè)文件,和傳統(tǒng)的web項(xiàng)目一樣控制器渲染視圖
好了,你可能知道了,我們以后的控制器代碼就放到 modules/v1/controllers 里了
剛才僅僅是默認(rèn)GII為我們生成的代碼,因?yàn)槲覀兪茿PI,所以 views 目錄,我們一般情況下用不到。
新建一個(gè) rest 的控制器
在 modulesv1controllers 下新建 UserController
修改 api/config/main.php 中的urlManager
"urlManager" => [ "enablePrettyUrl" => true, "enableStrictParsing" => true, "showScriptName" => false, "rules" => [ ["class" => "yii estUrlRule", "controller" => "v1/default", "extraPatterns"=>[ "GET index"=>"index", ], ], ["class" => "yii estUrlRule", "controller" => "v1/user", "extraPatterns"=>[ "GET index"=>"index", ], ], ], ],試著訪問下
http://localhost/v1/users/indexok,以上就是 Yii2.0 版本管理的實(shí)現(xiàn)方式
格式化響應(yīng)修改 api/config/main.php 在components 數(shù)組中添加 response
"response" => [ "class" => "yiiwebResponse", "on beforeSend" => function ($event) { $response = $event->sender; $response->data = [ "success" => $response->isSuccessful, "code" => $response->getStatusCode(), "message" => $response->statusText, "data" => $response->data, ]; $response->statusCode = 200; }, ],至此關(guān)于 Yii2.0 RESTFul API 我一共完成了 3 篇文章,分別為:
Yii2.0 RESTful API 基礎(chǔ)配置教程
Yii2.0 RESTful API 認(rèn)證教程
Yii2.0 RESTful API 之版本控制
寫得實(shí)在不怎么樣,您如果看了有收獲,不妨留言給個(gè)評(píng)論,或者您覺得寫得有問題,或者不明白,也可以留言,我們可以一塊探討研究。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/29917.html
摘要:之速率限制什么是速率限制權(quán)威指南翻譯過來(lái)為限流,為防止濫用,你應(yīng)該考慮對(duì)您的限流。如果在規(guī)定的時(shí)間內(nèi)接收了一個(gè)用戶大量的請(qǐng)求,將返回響應(yīng)狀態(tài)代碼這意味著過多的請(qǐng)求。 Yii2.0 RESTful API 之速率限制 什么是速率限制? 權(quán)威指南翻譯過來(lái)為限流,為防止濫用,你應(yīng)該考慮對(duì)您的 API 限流。 例如,您可以限制每個(gè)用戶 10 分鐘內(nèi)最多調(diào)用 API 100 次。 如果在規(guī)定的時(shí)...
摘要:最近在做功能,找了好久的資料,才找到這類的教程,感謝該作者,以下內(nèi)容根據(jù)我的項(xiàng)目實(shí)際情況做了一定的修改。 最近在做Yii2.0 RESTful API功能,找了好久的資料,才找到這類的教程,感謝該作者,以下內(nèi)容根據(jù)我的項(xiàng)目實(shí)際情況做了一定的修改。 安裝yii2.0 安裝 Composer 后,您可以通過在 Web 可訪問的文件夾下運(yùn)行以下命令來(lái) 安裝Yii應(yīng)用程序模板: compose...
這篇說下yii2.0開發(fā) API 吧,使用 RESTful API模式 安裝Yii2.0 通過 Composer 安裝 這是安裝Yii2.0的首選方法。如果你還沒有安裝 Composer,你可以按照這里的說明進(jìn)行安裝。 安裝完 Composer,運(yùn)行下面的命令來(lái)安裝 Composer Asset 插件: php composer.phar global require fxp/composer-a...
摘要:請(qǐng)求參數(shù)當(dāng)作請(qǐng)求參數(shù)發(fā)送,例如,由于大多數(shù)服務(wù)器都會(huì)保存請(qǐng)求參數(shù)到日志,這種方式應(yīng)主要用于請(qǐng)求,因?yàn)樗荒苁褂妙^來(lái)發(fā)送使用者從認(rèn)證服務(wù)器上獲取基于協(xié)議的,然后通過發(fā)送到服務(wù)器。 認(rèn)證介紹 和Web應(yīng)用不同,RESTful APIs 通常是無(wú)狀態(tài)的, 也就意味著不應(yīng)使用 sessions 或 cookies, 因此每個(gè)請(qǐng)求應(yīng)附帶某種授權(quán)憑證,因?yàn)橛脩羰跈?quán)狀態(tài)可能沒通過 sessions ...
摘要:最近在做認(rèn)證功能,記錄整個(gè)過程,方便以后查看。請(qǐng)求參數(shù)當(dāng)作請(qǐng)求參數(shù)發(fā)送,例如,由于大多數(shù)服務(wù)器都會(huì)保存請(qǐng)求參數(shù)到日志,這種方式應(yīng)主要用于請(qǐng)求,因?yàn)樗荒苁褂妙^來(lái)發(fā)送使用者從認(rèn)證服務(wù)器上獲取基于協(xié)議的,然后通過發(fā)送到服務(wù)器。 最近在做RESTful API認(rèn)證功能,記錄整個(gè)過程,方便以后查看。本文參照了 https://segmentfault.com/a/119000001636860...
閱讀 1707·2021-11-04 16:11
閱讀 3440·2021-09-09 11:33
閱讀 1645·2019-08-30 15:54
閱讀 680·2019-08-30 15:44
閱讀 3270·2019-08-30 15:43
閱讀 2651·2019-08-30 13:06
閱讀 1761·2019-08-29 17:00
閱讀 970·2019-08-29 15:33