亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Laravel思維導(dǎo)圖之HTTP請(qǐng)求、響應(yīng)、表單驗(yàn)證

lewif / 1986人閱讀

摘要:今天我來(lái)分享中層關(guān)于請(qǐng)求響應(yīng)與表單驗(yàn)證的知識(shí)。手動(dòng)創(chuàng)建驗(yàn)證請(qǐng)求之前的內(nèi)容是直接使用的方法來(lái)實(shí)現(xiàn)表單驗(yàn)證。下一步到這篇為止,我完成了入門指南核心概念層的路由中間件控制器請(qǐng)求響應(yīng)表單驗(yàn)證的學(xué)習(xí)和整理。

今天我來(lái)分享 Laravel 中 HTTP 層關(guān)于請(qǐng)求、響應(yīng)與表單驗(yàn)證的知識(shí)。

0x00 HTTP 請(qǐng)求

獲取請(qǐng)求

在控制器方法中使用 IlluminateHttpRequest 類型提示,
可以以依賴注入方式來(lái)獲取當(dāng)前 HTTP 請(qǐng)求的實(shí)例。

將路由參數(shù)置于其他依賴之后可以傳入路由參數(shù)。

Request 提供了內(nèi)置方法來(lái)便捷地做請(qǐng)求相關(guān)處理。

path 方法返回請(qǐng)求路徑信息。

is 方法驗(yàn)證收到的請(qǐng)求路徑與指定規(guī)則是否匹配。

url 返回不帶有查詢字符串的 URL。

fullUrl 返回包含查詢字符串的完整 URL。

method 方法返回 HTTP 請(qǐng)求方式。

isMethod 方法驗(yàn)證 HTTP 請(qǐng)求方式與指定規(guī)則是否匹配。

輸入數(shù)據(jù)的預(yù)處理與規(guī)范化

在 Laravel 的全局中間件中默認(rèn)包含了 TrimStringsConvertEmptyStringsToNull 兩個(gè)中間件。這些中間件被列在 AppHttpKernel 類中。它們會(huì)自動(dòng)處理所有請(qǐng)求中傳入的字符串字段,比如將空的字符串字段轉(zhuǎn)變成 null 值。想停用這些功能,則需要在 AppHttpKernel 類的 $middleware 屬性中移除這些中間件。

獲取輸入數(shù)據(jù)

Laravel 支持從 Request 中獲取常規(guī)數(shù)據(jù)、舊輸入數(shù)據(jù)、cookies。

獲取常規(guī)數(shù)據(jù)的方法有:

使用 all 方法以 數(shù)組 形式獲取到所有輸入數(shù)據(jù)。

input 方法獲取指定輸入值。

通過(guò)動(dòng)態(tài)屬性獲取輸入數(shù)據(jù)。

通過(guò) json 方法獲取 JSON 輸入信息。

通過(guò) only/except 方法獲取部分輸入數(shù)據(jù)。

通過(guò) has 方法確定是否有輸入值。

對(duì)于舊數(shù)據(jù),Laravel 允許你將本次的輸入數(shù)據(jù)保留到下一次請(qǐng)求發(fā)送前。
這個(gè)特性在表單驗(yàn)證錯(cuò)誤后重新填寫(xiě)表單相當(dāng)有用。

文件資源

獲取上傳文件的相關(guān)方法:

file 方法獲取上傳的文件。

hasFile 方法確認(rèn)上傳的文件是否存在。

isValid 方法驗(yàn)證上傳的文件是否有效。

UploadedFile 這個(gè)類也包含了訪問(wèn)文件完整路徑和擴(kuò)展的方法。

path 方法獲取路徑。

extension 方法獲取擴(kuò)展名。

此外,store 方法支持上傳文件儲(chǔ)存到本地磁盤或者云存儲(chǔ)上。

0x01 HTTP 響應(yīng)

所有路由和控制器都會(huì)返回一個(gè)響應(yīng)并返回給用戶的瀏覽器。

創(chuàng)建響應(yīng)

Laravel 支持的 HTTP 響應(yīng)類型包括字符串、數(shù)組、對(duì)象、附件頭信息、附加 Cookie 等。

重定向

重定向響應(yīng)是 IlluminateHttpRedirectResponse 類的實(shí)例,
并且包含用戶需要重定向至另一個(gè) URL 所需的頭信息。

Laravel 支持:

通過(guò)全局 redirect 輔助函數(shù)實(shí)現(xiàn)重定向。

通過(guò) back 輔助函數(shù)實(shí)現(xiàn)重定向至上級(jí)頁(yè)面。

重定向至命名路由,并根據(jù)需要攜帶普通或 Eloquent 模型參數(shù)。

通過(guò) action 方法傳遞控制器和行為名稱作為參數(shù)來(lái)實(shí)現(xiàn)重定向至控制器行為。

重定向至一個(gè)新的 URL 的同時(shí)通常會(huì) 附加 Session 閃存數(shù)據(jù)。

其他響應(yīng)

使用全局輔助函數(shù) response 可以輕松的生成其他類型的響應(yīng)實(shí)例。

響應(yīng)宏

自定義可以在很多路由和控制器重復(fù)使用的響應(yīng),可以使用 Response Facade 實(shí)現(xiàn)的 macro 方法。

0x02 表單驗(yàn)證機(jī)制詳解

Laravel 提供了多種不同的驗(yàn)證方法來(lái)對(duì)應(yīng)用程序傳入的數(shù)據(jù)進(jìn)行驗(yàn)證。默認(rèn)情況下,Laravel 的基類控制器使用 ValidatesRequests Trait,它提供了方便的方法使用各種強(qiáng)大的驗(yàn)證規(guī)則來(lái)驗(yàn)證傳入的 HTTP 請(qǐng)求數(shù)據(jù)。

快速上手實(shí)例

重點(diǎn)在于在控制器的方法中,添加驗(yàn)證邏輯。

表單請(qǐng)求驗(yàn)證

這部分與上面實(shí)例的差別在于為了滿足更復(fù)雜的驗(yàn)證情境,我們需要?jiǎng)?chuàng)建一個(gè)表單請(qǐng)求。表單請(qǐng)求是一個(gè)自定義的請(qǐng)求類,里面包含著驗(yàn)證邏輯。想要運(yùn)行驗(yàn)證規(guī)則,在控制器方法中利用類型提示傳入請(qǐng)求。

在自定義的表單請(qǐng)求類中可以實(shí)現(xiàn):

通過(guò) rules 方法添加驗(yàn)證規(guī)則。

通過(guò) withValidator 方法在表單請(qǐng)求以后添加鉤子。

通過(guò) authorize 方法授權(quán)表單請(qǐng)求。

重寫(xiě) AppHttpRequestsRequest 中的
formatErrors 方法來(lái)自定義錯(cuò)誤格式。

重寫(xiě) messages 方法自定義錯(cuò)誤消息。

手動(dòng)創(chuàng)建驗(yàn)證請(qǐng)求

之前的內(nèi)容是直接使用 ValidatesRequests Trait 的 validate 方法來(lái)實(shí)現(xiàn)表單驗(yàn)證。此外,還可以手動(dòng)創(chuàng)建一個(gè) validator 實(shí)例并通過(guò) Validator::make 方法在 Facade 生成一個(gè)新的 validator 實(shí)例來(lái)實(shí)現(xiàn)表單驗(yàn)證。

處理錯(cuò)誤消息

調(diào)用 Validator 實(shí)例的 errors 方法,會(huì)得到一個(gè) IlluminateSupportMessageBag 的實(shí)例,可以對(duì) MessageBag 進(jìn)行各種處理,以滿足具體的需求。

常用的錯(cuò)誤信息相關(guān)方法:

通過(guò) first 方法查看特定字段的第一個(gè)錯(cuò)誤消息。

通過(guò) get 方法查看特定字段的所有錯(cuò)誤消息。

通過(guò) all 方法查看所有字段的所有錯(cuò)誤消息。

通過(guò) has 方法判斷特定字段是否含有錯(cuò)誤消息。

自定義錯(cuò)誤消息則主要通過(guò)傳遞三個(gè)參數(shù)到 Validator::make 方法來(lái)實(shí)現(xiàn)。

內(nèi)置可用的驗(yàn)證規(guī)則

Laravel 內(nèi)置了大量可用的驗(yàn)證規(guī)則。如下圖:

具體用法可以查看文檔:http://d.laravel-china.org/docs/5.4/validation#available-validation-rules

按條件添加規(guī)則

Laravel 還可以實(shí)現(xiàn)靈活的根據(jù)條件添加規(guī)則,如當(dāng)字段存在時(shí)才進(jìn)行驗(yàn)證,以及更多復(fù)雜的自定義驗(yàn)證規(guī)則。

驗(yàn)證數(shù)組

對(duì)于請(qǐng)求中的數(shù)組參數(shù),可以使用型號(hào) * 字符獲取所有數(shù)組中的項(xiàng)。

自定義規(guī)則

除了 Laravel 內(nèi)置的驗(yàn)證規(guī)則外,還可以根據(jù)需要自定義規(guī)則。在 服務(wù)提供者 中使用 Validator Facade 中的 extend 方法來(lái)注冊(cè)自定義的驗(yàn)證規(guī)則。

0x03 下一步

到這篇為止,我完成了 Laravel 入門指南、核心概念、HTTP 層的路由、中間件、控制器、請(qǐng)求、響應(yīng)、表單驗(yàn)證的學(xué)習(xí)和整理。這幾個(gè)部分已經(jīng)可以讓你實(shí)現(xiàn)簡(jiǎn)單的面向前端的接口。

接下來(lái)我將對(duì)數(shù)據(jù)庫(kù)及 ORM 部分進(jìn)行學(xué)習(xí)和整理。絕大多數(shù)應(yīng)用的數(shù)據(jù)都存儲(chǔ)在數(shù)據(jù)庫(kù)中,服務(wù)端的功能圍繞著數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)展開(kāi),從而構(gòu)建了強(qiáng)大的應(yīng)用。

0x04 寫(xiě)在最后

對(duì)于知識(shí)的學(xué)習(xí),整理是非常關(guān)鍵的一環(huán),有助于加深理解。

對(duì)于 Laravel 的學(xué)習(xí)我將持續(xù)地以思維導(dǎo)圖的方式整理輸出,并首發(fā)在微信公眾號(hào) up2048 上分享給需要的讀者。

由于思維導(dǎo)圖在導(dǎo)出成圖片的過(guò)程中會(huì)變得模糊,為了方便讀者,我也提供了思維導(dǎo)圖源文件的下載。讀者可根據(jù)需要,關(guān)注微信公眾號(hào):up2048,并回復(fù)“腦圖”來(lái)免費(fèi)獲取

- EOF -

推薦閱讀

記一次 Laravel 應(yīng)用性能調(diào)優(yōu)經(jīng)歷

你開(kāi)發(fā)的小程序慢到令人發(fā)指可能僅僅因?yàn)樗?/p>

我心目中的網(wǎng)絡(luò)接口設(shè)計(jì)到底是怎樣的過(guò)程?

多平臺(tái)統(tǒng)一用戶系統(tǒng)設(shè)計(jì)

十五張思維導(dǎo)圖帶你快速學(xué)習(xí)PHP言語(yǔ)基礎(chǔ)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/25782.html

相關(guān)文章

  • Laravel思維導(dǎo)圖之Laravel HTTP路由、中間件、控制器

    摘要:又限于層的內(nèi)容太多,我在這篇中將整理路由中間件控制器部分內(nèi)容。前者定義頁(yè)面路由,默認(rèn)應(yīng)用中間件組后者定義無(wú)狀態(tài)路由,會(huì)應(yīng)用中間件組。命名路由可以為指定路由或者控制器方法命名,也可以為已命名的路由生成。 showImg(https://segmentfault.com/img/remote/1460000010882838); 上圖列出了 Laravel HTTP 層的相關(guān)知識(shí)大綱。由于...

    linkin 評(píng)論0 收藏0
  • 記一次 Laravel 應(yīng)用性能調(diào)優(yōu)經(jīng)歷

    摘要:為了一探究竟,于是開(kāi)啟了這次應(yīng)用性能調(diào)優(yōu)之旅。使用即時(shí)編譯器和都能輕輕松松的讓你的應(yīng)用程序在不用做任何修改的情況下,直接提高或者更高的性能。 這是一份事后的總結(jié)。在經(jīng)歷了調(diào)優(yōu)過(guò)程踩的很多坑之后,我們最終完善并實(shí)施了初步的性能測(cè)試方案,通過(guò)真實(shí)的測(cè)試數(shù)據(jù)歸納出了 Laravel 開(kāi)發(fā)過(guò)程中的一些實(shí)踐技巧。 0x00 源起 最近有同事反饋 Laravel 寫(xiě)的應(yīng)用程序響應(yīng)有點(diǎn)慢、20幾個(gè)并...

    warkiz 評(píng)論0 收藏0
  • Laravel思維導(dǎo)圖之Laravel入門指南

    摘要:本系列思維導(dǎo)圖整理自版本官方文檔。思維導(dǎo)圖導(dǎo)出為圖片時(shí)會(huì)導(dǎo)致其變模糊。需要高清的思維導(dǎo)圖源文件,請(qǐng)關(guān)注微信公眾號(hào),并回復(fù)精進(jìn)腦圖來(lái)獲取。今天我們就通過(guò)張思維導(dǎo)圖來(lái)快速看入門指南。這些文章都將首發(fā)在微信公眾號(hào)上。 showImg(https://segmentfault.com/img/remote/1460000010774258); 本系列思維導(dǎo)圖整理自 Laravel 5.4 版...

    vibiu 評(píng)論0 收藏0
  • Laravel思維導(dǎo)圖之Laravel核心概念

    摘要:的核心概念包括服務(wù)容器服務(wù)提供者門面契約。所有服務(wù)提供者都需要繼承類??梢詾榉?wù)提供者的方法設(shè)置類型提示。方法將在所有其他服務(wù)提供者均已注冊(cè)之后調(diào)用。同樣會(huì)整理成思維導(dǎo)圖的形式以方便記憶與回顧。 showImg(https://segmentfault.com/img/remote/1460000010771201); Laravel 的核心概念包括:服務(wù)容器、服務(wù)提供者、門面(Fac...

    wthee 評(píng)論0 收藏0
  • 【日常填坑】之a(chǎn)jax請(qǐng)求laravel的api接口

    摘要:合適和夠用是最完美的追求。比如從頁(yè)面去請(qǐng)求的資源。它允許瀏覽器向跨源服務(wù)器,發(fā)出請(qǐng)求,從而克服了只能同源使用的限制。定義在中的路由都是無(wú)狀態(tài)的,并且會(huì)應(yīng)用中間件組。 關(guān)于作者 程序開(kāi)發(fā)人員,不拘泥于語(yǔ)言與技術(shù),目前主要從事PHP和前端開(kāi)發(fā),使用Laravel和VueJs,App端使用Apicloud混合式開(kāi)發(fā)。合適和夠用是最完美的追求。 個(gè)人網(wǎng)站:http://www.linganm...

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

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

0條評(píng)論

lewif

|高級(jí)講師

TA的文章

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