成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

lumen5.5學(xué)習(xí)路由和中間件(四)

1fe1se / 3385人閱讀

摘要:想要做到這一點(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

相關(guān)文章

  • lumen5.5學(xué)習(xí)(三)

    摘要:接著上篇分割線是的實(shí)例,但是文件中找不到方法在類內(nèi)部看到,打開找到了方法,方法注釋寫的是主要用于運(yùn)行應(yīng)用以及發(fā)送響應(yīng)主要看方法 接著上篇$app->run();--------------------分割線------------------------ $app是Application的實(shí)例,但是Application.php文件中找不到run方法在類內(nèi)部看到use Concerns...

    svtter 評(píng)論0 收藏0
  • lumen5.5學(xué)習(xí)(二)

    摘要:繼續(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目錄...

    shengguo 評(píng)論0 收藏0
  • lumen5.5學(xué)習(xí)(一)

    摘要:最近在學(xué)習(xí)框架寫接口,記憶力比較差所以順便寫下筆記分割線因?yàn)橹苯訉W(xué)最新版的所以,記得開啟的,,擴(kuò)展還有可以用的打開命令 最近在學(xué)習(xí)lumen框架寫API接口,記憶力比較差所以順便寫下筆記~ -----------------------------分割線-------------------------------- 因?yàn)橹苯訉W(xué)最新版的所以,PHP >=7.0記得開啟php.ini的o...

    mindwind 評(píng)論0 收藏0
  • windows下laravel5.5手寫教程1(適合初學(xué)者)

    摘要:打開瀏覽器輸入,如無(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)境...

    GeekGhc 評(píng)論0 收藏0
  • 【Node Hero】4. 第一個(gè) Node.js HTTP 服務(wù)器

    摘要:本文轉(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...

    Coly 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<