摘要:想要做到這一點,你需要定義中間件為。如果你希望在及方法被調用時使用一致的中間件實例,只需在容器中使用容器的方法注冊中間件以上就是路由和中間件的學習,最后那那其實理解得有點虛,有錯記得指出修正,謝謝
前幾篇了解完從請求到響應的流程后,仔細學習下路由和中間件的玩法
----------------------------------分割線--------------------------------
路由基本用法可以參考中文文檔的路由,要注意的是
1)$app要換成$route
2)namespace不需要寫全,5.5新版本會自動把前面的那部分補全
上一下基本例子:
//當路由為api.com/index.php/user/1/hano/2時, //由ExampleController的show方法響應請求 $router->get("user/{id}/{name}/{sex}", "ExampleController@show"); //as鍵值對可以對此路由進行命名,uses指定響應操作 //as的作用有利于生成重定向的URL:redirect()->route("profile"); //middlerware中間件提供了一個方便的機制來過濾進入應用程序的 HTTP 請求 **使用中間件要先在app.php中打開routeMiddleware代碼的注釋進行注冊中間件** // $app->routeMiddleware([ // "auth" => AppHttpMiddlewareAuthenticate::class, // "validate" => AppHttpMiddlewarevalidateMiddle::class, // "before" => AppHttpMiddlewareeforeMiddle::class, // "after" => AppHttpMiddlewareafterMiddle::class, // ]); $router->get("getUrl/{str}", [ "as" => "profile", "uses" => "ExampleController@getUrl", "middleware" => "auth" ]); //路由群組可以為多個路由設置共同屬性,而不需在每個路由上都設置一次 //namespace命名空間將匹配到的路由給到AppHttpControllersUser下的控制器處理 //prefix路由前綴匹配到的路由為api.com/index.php/admin/{路由名稱} //middleware此組路由都會先經過validate中間件 $router->group([ "namespace" => "User", "prefix" => "admin", "middleware => "validate" ],function() use ($router) { $router->get("getUserInfo/{user_id}", [ "as" => "getUserInfo", "uses" => "UserController@getUserInfo" ]); $router->post("updateUserInfo/{user_id}", [ "as" => "updateUserInfo", "uses" => "UserController@updateUserInfo" ]); });中間件
中間件文件都放在app/http/Middleware文件夾中,可以根據ExampleMiddleware.php進行創建
中間件分前置和后置兩種
namespace AppHttpMiddleware; use Closure; class BeforeMiddleware { //第三個參數為額外傳參 public function handle($request, Closure $next, $name) { //前置中間件,在執行路由定義指定的操作前做你想做的事情 var_dump($name); return $next($request); } }后置中間件
路由可指示多個中間件,用數組形式表達
附加的中間件參數將會在 $next 參數之后被傳入中間件,用法://在路由中使用冒號 : 來區隔中間件名稱與指派參數,多個參數可使用逗號作為分隔 $router->get("getUrl/{str}", [ "as" => "profile", "uses" => "ExampleController@getUrl", "middleware" => ["before:hano","after:hano"] //hano將為$name的值 ]);全局中間件每個 HTTP 請求都經過一個中間件,只要將中間件的類加入到 bootstrap/app.php 的 $app->middleware() 調用參數數組中。
$app->middleware([ AppHttpMiddlewareAuthenticate::class, ]);Terminable中間件有些時候中間件需要在 HTTP 響應被發送到瀏覽器之后才運行,例如,「session」中間件存儲的 session 數據是在響應被發送到瀏覽器之后才進行寫入的。想要做到這一點,你需要定義中間件為「terminable」。
terminate 方法必須接收請求($request)及響應($response)兩個參數。一旦定義了 terminable 中間件,你便需要將它增加到 bootstrap/app.php 文件的全局中間件清單列表中。
$app->middleware([ AppHttpMiddlewareAuthenticate::class, AppHttpMiddleware erminable::class, ]);當在你的中間件調用 terminate 方法時,Lumen 會從 服務容器 解析一個全新的中間件實例。
如果你希望在 handle 及 terminate 方法被調用時使用一致的中間件實例,只需在容器中使用容器的 singleton 方法注冊中間件
$app->singleton( AppHttpMiddleware erminable::class );以上就是路由和中間件的學習,最后那terminable那part其實理解得有點虛,有錯記得指出修正,謝謝
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26200.html
摘要:接著上篇分割線是的實例,但是文件中找不到方法在類內部看到,打開找到了方法,方法注釋寫的是主要用于運行應用以及發送響應主要看方法 接著上篇$app->run();--------------------分割線------------------------ $app是Application的實例,但是Application.php文件中找不到run方法在類內部看到use Concerns...
摘要:繼續學習分割線看看是怎么輸出這個數據目錄下的加載了下的的自動加載加載的配置初始化應用初始化的內容指定項目基礎目錄注冊服務容器注冊異常處理實例 繼續學習lumen5.5 -----------------------分割線----------------------- 看看是怎么輸出Lumen (5.5.2) (Laravel Components 5.5.*)這個數據 public目錄...
摘要:最近在學習框架寫接口,記憶力比較差所以順便寫下筆記分割線因為直接學最新版的所以,記得開啟的,,擴展還有可以用的打開命令 最近在學習lumen框架寫API接口,記憶力比較差所以順便寫下筆記~ -----------------------------分割線-------------------------------- 因為直接學最新版的所以,PHP >=7.0記得開啟php.ini的o...
摘要:打開瀏覽器輸入,如無意外,將出現如下圖,表示框架安裝成功。四系統內部后臺管理系統這個是框架自帶的后臺登錄管理系統,只需要簡單的命令即可運行。出現上圖即為,創建模型成功。 在PHP個各種web開發框架中,laravel算是一款簡潔、優雅的開發框架,本人也剛剛接觸到laravel,通過學習大神們的一些文章,下面是我的一些心得體會,希望可以給初學者一些幫助,大家一起進步。言歸正傳: 本人環境...
摘要:本文轉載自眾成翻譯譯者網絡埋伏紀事鏈接原文本章我會指導你啟動一個簡單的服務器,并開始為請求服務。現在,我們開始創建第一個服務器我們將模塊,并將服務器綁定到端口來監聽。必須用如下方式啟動服務器總結本章學習了如何從頭開始創建第一個服務器。 本文轉載自:眾成翻譯譯者:網絡埋伏紀事鏈接:http://www.zcfy.cc/article/1750原文:https://blog.risings...
閱讀 1868·2021-11-22 09:34
閱讀 1141·2021-10-09 09:44
閱讀 3001·2021-09-29 09:35
閱讀 3617·2021-09-14 18:01
閱讀 1465·2021-08-16 10:49
閱讀 1084·2019-08-29 14:11
閱讀 849·2019-08-29 12:47
閱讀 3068·2019-08-26 13:47