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

Laravel-HTTP層

上圖列出了 Laravel HTTP 層的相關知識大綱。因爲目前本身的工做中網頁、App、小程序等都採用先後臺分離的方式實現,前端頁面經過接口從後端獲取數據並本身渲染,所以大綱中的 Session、視圖、CSRF 保護幾個部分將不作整理。又限於 HTTP 層的內容太多,我在這篇中將整理路由、中間件、控制器 3 部份內容。在下一期裏,再整理 HTTP 請求、響應及表單驗證部分的內容。php

0x00 路由

路由

基本路由

構建最基本的路由只須要一個 URI 和一個閉包。全部的 Laravel 路由都在 routes 目錄中的路由文件中定義。Laravel 默認提供 web.php 和 api.php 兩個路由文件。前者定義 web 頁面路由,默認應用 web 中間件組;後者定義無狀態路由,會應用 api 中間件組。前端

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

基本路由

路由參數

Laravel 能夠經過多種方式對路由參數的必選、可選及具體格式進行約束。小程序

路由參數

命名路由

Laravel 能夠爲指定路由或者控制器方法命名,也能夠爲已命名的路由生成 URL。後端

命名路由

路由組

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

路由組

路由模型綁定

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

隱式綁定時,默認綁定 Eloquent 模型的 ID 字段。經過模型的 getRouteKeyName 方法能夠自定義綁定鍵名。網絡

顯式綁定則是使用路由的 model 方法來爲已有參數聲明 class 。閉包

路由模型綁定

0x01 路由中間件

Laravel 中間件提供了一種方便的機制來過濾進入應用的 HTTP 請求。能夠將中間件想象爲一系列的「層」,HTTP 請求必須通過它們纔會觸發您的應用程序。每一層均可以檢測接收的請求,甚至能夠徹底拒絕請求訪問您的應用。post

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

路由中間件

0x02 控制器

控制器可以將相關的請求處理邏輯組成一個單獨的類。是在路由文件中以閉包的形式定義全部的請求處理邏輯以外的另外一種形式。

資源控制器

Laravel 資源路由能夠將典型的 CRUD 路由指定到一個控制器上,僅僅須要一行代碼就能夠實現,這大大提升了後臺業務的開發效率。

以相片控制器爲例,兩個步驟能夠定義好處理全部應用保存的相片 HTTP 請求的業務。

  1. 經過一行命令建立一個控制器
  2. 爲這個控制器註冊一個資源路由

資源路由的聲明會建立的多個路由來處理各類各樣的資源操做,這些操做都包含在控制器中了。

資源控制器操做處理

除了提供默認的操做外,能夠根據須要對操做進行自定義。

  1. 能夠只定義部分資源路由
  2. 能夠重寫默認的資源路由名稱
  3. 能夠重寫資源路由的默認參數名稱
  4. 能夠實現資源 URI 的語言本地化
  5. 能夠附加其餘須要的資源控制器

資源控制器

依賴注入與控制器

Laravel 使用服務容器來解析全部的控制器。能夠在控制器的構造方法中對任何依賴使用類型約束,也能夠在控制器方法中使用依賴類型約束。

下一步

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

思惟導圖在導出的過程當中會變得模糊,若有須要高清的思惟導圖源文件,請加微信公衆號:up2048,並回復「腦圖」來獲取。

- EOF -

推薦閱讀

相關文章
相關標籤/搜索