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