Laravel思維導圖之Laravel HTTP路由、中間件、控制器

Laravel HTTP層

上圖列出了 Laravel HTTP 層的相關知識大綱。由于目前自己的工作中網(wǎng)頁、App、小程序等都采用前后臺分離的方式實現(xiàn),前端頁面通過接口從后端獲取數(shù)據(jù)并自己渲染,因此大綱中的 Session、視圖、CSRF 保護幾個部分將不做整理。又限于 HTTP 層的內(nèi)容太多,我在這篇中將整理路由、中間件、控制器 3 部分內(nèi)容。在下一期里,再整理 HTTP 請求、響應及表單驗證部分的內(nèi)容。

0x00 路由

路由

基本路由

構建最基本的路由只需要一個 URI 和一個閉包。所有的 Laravel 路由都在 routes 目錄中的路由文件中定義。Laravel 默認提供 web.php 和 api.php 兩個路由文件。前者定義 web 頁面路由,默認應用 web 中間件組;后者定義無狀態(tài)路由,會應用 api 中間件組。

Laravel 的 Route Facade 提供了 get, post, put, patch, delete, options, match, any 等路由方法來支持響應單個、多個、所有的 HTTP 方法。

基本路由

路由參數(shù)

Laravel 可以通過多種方式對路由參數(shù)的必選、可選及具體格式進行約束。

路由參數(shù)

命名路由

Laravel 可以為指定路由或者控制器方法命名,也可以為已命名的路由生成 URL。

命名路由

路由組

Laravel 的路由組允許共享路由屬性,常用的路由組包括中間件、命名空間、子域名路由和路由前綴。

路由組

路由模型綁定

Laravel 路由模型綁定提供了一個方便的方法自動將模型注入到路由中,可以隱式綁定,也可以顯式綁定。

隱式綁定時,默認綁定 Eloquent 模型的 ID 字段。通過模型的 getRouteKeyName 方法可以自定義綁定鍵名。

顯式綁定則是使用路由的 model 方法來為已有參數(shù)聲明 class 。

路由模型綁定

0x01 路由中間件

Laravel 中間件提供了一種方便的機制來過濾進入應用的 HTTP 請求??梢詫⒅虚g件想象為一系列的「層」,HTTP 請求必須經(jīng)過它們才會觸發(fā)您的應用程序。每一層都可以檢測接收的請求,甚至可以完全拒絕請求訪問您的應用。

常見的中間件實例包括身份驗證中間件、日志中間件、 CSRF 中間件等。多個單獨的中間件還可以定義為中間件組。Laravel 帶有開箱即用的 web 和 api 中間件組。

路由中間件

0x02 控制器

控制器能夠?qū)⑾嚓P的請求處理邏輯組成一個單獨的類。是在路由文件中以閉包的形式定義所有的請求處理邏輯之外的另一種形式。

資源控制器

Laravel 資源路由可以將典型的 CRUD 路由指定到一個控制器上,僅僅需要一行代碼就可以實現(xiàn),這大大提高了后臺業(yè)務的開發(fā)效率。

以相片控制器為例,兩個步驟可以定義好處理所有應用保存的相片 HTTP 請求的業(yè)務。

  1. 通過一行命令創(chuàng)建一個控制器
  2. 為這個控制器注冊一個資源路由

資源路由的聲明會創(chuàng)建的多個路由來處理各種各樣的資源操作,這些操作都包含在控制器中了。

資源控制器操作處理

除了提供默認的操作外,可以根據(jù)需要對操作進行自定義。

  1. 可以只定義部分資源路由
  2. 可以重寫默認的資源路由名稱
  3. 可以重寫資源路由的默認參數(shù)名稱
  4. 可以實現(xiàn)資源 URI 的語言本地化
  5. 可以附加其他需要的資源控制器
資源控制器

依賴注入與控制器

Laravel 使用服務容器來解析所有的控制器??梢栽诳刂破鞯臉嬙旆椒ㄖ袑θ魏我蕾囀褂妙愋图s束,也可以在控制器方法中使用依賴類型約束。

下一步

在下一期中,我將整理 Laravel HTTP 請求、響應及表單驗證的相關知識。這些是所有網(wǎng)絡應用最重要的部分。

思維導圖在導出的過程中會變得模糊,如有需要高清的思維導圖源文件,請加微信公眾號:up2048,并回復“腦圖”來獲取。

- EOF -

推薦閱讀

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • 介紹 不要把所有處理請求的邏輯都放到一個單獨的 routes.php 文件里,我們可以使用控制器去組織這些行為。C...
    伊Summer閱讀 884評論 0 1
  • 路由 路由(routing)就是通過互聯(lián)的網(wǎng)絡把信息從源地址傳輸?shù)侥康牡刂返幕顒?。路由發(fā)生在OSI網(wǎng)絡參考模型中的...
    Dearmadman閱讀 2,954評論 2 9
  • 0.1配置1.模板繼承2.控制器3.git4.支付寶支付的流程5.路由6.中間件7.請求8.laravel 學習筆...
    云龍789閱讀 882評論 0 5
  • 今天我來分享 Laravel 中 HTTP 層關于請求、響應與表單驗證的知識。 0x00 HTTP 請求 獲取請求...
    胖福哥閱讀 1,429評論 1 20

友情鏈接更多精彩內(nèi)容