久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

Laravel學(xué)習(xí)教程之request validation的編寫

這篇文章主要給大家介紹了關(guān)于Laravel學(xué)習(xí)教程之request validation編寫的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面

前言

本文主要給大家介紹了關(guān)于Laravel之request validation編寫的相關(guān)內(nèi)容,在用laravel寫api時,當(dāng)前端傳進來的request是POST/PUT/PATH等method時,那需要做request validation,盡管對于前后端分離程序,前端程序Angular/Vue已經(jīng)做了validation,但是ajax傳過來的json input,在后端也需要做validation。

那該如何優(yōu)雅的編寫request validation呢?laravel官方文檔已經(jīng)包含了這個feature: Form Request Validation

實現(xiàn)方法如下

這里可以寫一個JsonRequest:

class JsonRequest extends Illuminate\Foundation\Http\FormRequest
{
 public function rules()
 {
  $method = $this->method();
  
  assert(in_array($method, [static::METHOD_POST, static::METHOD_PUT, static::METHOD_PATCH], true));
  
  $controller = $this->route()->getController();
  $rules  = $controller::RULES;

  return ($rules[$this->method()] ?? []) + ($rules['*'] ?? []);
 }

 public function authorize()
 {
  return true;
 }
}

這樣就可以在眾多Model Controller里使用JsonRequest就行,如:

use Illuminate\Http\Request;

final class AccountController extends \App\Http\Controllers\Controller
{
 public const RULES = [
  Request::METHOD_POST => [
   'bank_account' => 'required_if:type,bank',
   'loan_account' => 'required_if:type,loan',
  ],
  Request::METHOD_PUT => [
   // ...
  ],
  '*' => [
   // ...
  ],
 ];
}

這樣就可以校驗前端傳進來的json input是否合法。

(1)如果前端傳進來的json input是:

{
 "name": "lx1036",
 "type": "loan",
 "bank_account": {
  "source": "bank",
 }
}

那就validation失敗,不合法。

(2) 如果前端傳進來的json input是:

{
 "name": "lx1036",
 "type": "bank",
 "loan_account": {
  "source": "loan",
 }
}

那就validation失敗,不合法。

這樣就可以校驗json input,不合法就直接彈回throw 一個HttpException,不再用在進入下一步邏輯。對于這樣嵌套的json input,使用request validation來校驗對象間關(guān)系很重要,可以看做是進入核心業(yè)務(wù)邏輯前的初步校驗。。當(dāng)然最后寫表時還有model validation,避免壞數(shù)據(jù)進入db。

最后一點,laravel文檔只是說了用法,沒有說明原理。代碼在\Illuminate\Foundation\Providers\FormRequestServiceProvider::class:

 public function boot()
 {
  // \Illuminate\Foundation\Http\FormRequest use 了 ValidatesWhenResolvedTrait,extends 了 \Illuminate\Contracts\Validation\ValidatesWhenResolved
  $this->app->afterResolving(ValidatesWhenResolved::class, function ($resolved) {
   $resolved->validate();
  });

  // ...
 }

所以當(dāng)從容器中resolve完\Illuminate\Foundation\Http\FormRequest后就會立即執(zhí)行\(zhòng)Illuminate\Foundation\Http\FormRequest::validate()方法,具體不詳述,可看laravel源碼。

OK,總之,在寫程序時,validation很重要,需要去寫,包括request validation和model validation。。。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對的支持。

【網(wǎng)站聲明】本站除付費源碼經(jīng)過測試外,其他素材未做測試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請勿用于商業(yè)用途。如損害你的權(quán)益請聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

下面小編就為大家分享一篇laravel ORM 只開啟created_at的幾種方法總結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要給大家介紹了如何通過源碼解析Laravel的依賴注入的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著
這篇文章主要給大家介紹了關(guān)于Laravel中unique和exists驗證規(guī)則的優(yōu)化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面
最近在使用laravel5.5,利用其實現(xiàn)了一個功能,下面分享給大家,這篇文章主要給大家介紹了關(guān)于Laravel 5.5基于內(nèi)置的Auth模塊如何實現(xiàn)前后臺登陸的相關(guān)資料,文中通過示例代碼介紹的非
laravel 的隊列服務(wù)對各種不同的后臺隊列服務(wù)提供了統(tǒng)一的 API,下面這篇文章通過源碼分析給大家介紹了關(guān)于 Laravel 重復(fù)執(zhí)行同一個隊列任務(wù)的原因,文中通過示例代碼介紹的非常詳細(xì)
這篇文章主要給大家介紹了關(guān)于 Laravel Redis 多個進程同時取隊列問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價值,需要的朋友下面來
主站蜘蛛池模板: 国产精品一区二区免费 | 精精国产视频 | 亚洲导航深夜福利涩涩屋 | 免费观看www7722午夜电影 | 成人免费观看视频 | 欧美成人精品在线 | 狠狠爱一区二区三区 | 欧美a在线看 | 开操网 | 成人精品| 一区二区三区小视频 | 国产精品亚洲成在人线 | 一级毛片在线视频 | 羞视频在线观看 | 成人欧美一区二区三区视频xxx | 91精品国产日韩91久久久久久 | 中文字字幕一区二区三区四区五区 | 九九热精品免费 | 精品久久久久久亚洲综合网站 | 日韩中文一区二区三区 | 国产精品一区在线播放 | 国产精品久久久久久一区二区三区 | 国产欧美一区二区三区在线播放 | 一级国产精品一级国产精品片 | 欧美一区二区三区在线看 | 99热视 | 精品自拍视频在线观看 | 成人一区av | 亚洲欧美一区二区三区国产精品 | 亚洲精品乱码久久久久久久久久 | 久久久久九九九女人毛片 | 国产一级片久久久 | 日韩欧美大片 | 午夜羞羞| 羞羞视频免费观看 | 亚洲精美视频 | 免费在线一区二区三区 | 欧美国产一区二区 | 久久亚洲精品久久国产一区二区 | 国产一区中文字幕 | 91在线一区二区 |