第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

路由驗(yàn)證

本小節(jié)主要介紹如何在路由驗(yàn)證請(qǐng)求的合法性,主要包括請(qǐng)求的變量規(guī)則、url后綴、路由中間件。

1.變量規(guī)則

這里以之前獲取學(xué)生列表接口為例,若要在路由層面增加變量的過濾規(guī)則,可以使用pattern 方法,如下:

//獲取學(xué)生列表接口
Route::get('students/:name', 'app\controller\Study\StudentController@getStudents')->pattern(['name' => '[\w|\-]+']);

如下圖所示:
圖片描述

Tips: 其中 :name 表示路由后面可以跟變量 name[\w|\-]+ 是一個(gè)正則表達(dá)式,對(duì) name 字段匹配。

下面在 getStudents 方法中打印 name 變量,并返回正確的請(qǐng)求結(jié)果:

/**
     * 獲取學(xué)生列表
     * @return \think\response\Json
     * @throws \think\db\exception\DbException
     */
    public function getStudents()
    {
        halt($this->request->param('name'));
        //每頁條數(shù)
        $size = (int)$this->request->param('size', 15);
        $students = StudentModel::where('status', 1)->order('created_at DESC')->paginate($size);
        return json($students);
    }

如下圖所示:
圖片描述
請(qǐng)求正確結(jié)果如下圖:
圖片描述

請(qǐng)求不滿足正則匹配的要求如下圖:
圖片描述

2.URL 后綴驗(yàn)證

若想要某個(gè)請(qǐng)求的 url 的后綴滿足某種后綴可以使用 ext() 方法,如下:

//獲取學(xué)生列表接口
Route::get('students/:name', 'app\controller\Study\StudentController@getStudents')->ext('html');

如下圖所示:
圖片描述
下面演示返回正確的情況:
圖片描述
下面演示返回錯(cuò)誤的情況:
圖片描述

3.路由中間件

首先使用如下命令生成一個(gè)中間件 Auth

php think make:middleware Check

如下圖所示:
圖片描述
然后Auth中處理特定的請(qǐng)求,如下圖貼出簡(jiǎn)單的權(quán)限驗(yàn)證的情況:

    /**
     * 處理請(qǐng)求
     *
     * @param \think\Request $request
     * @param \Closure       $next
     * @return Response
     */
    public function handle($request, \Closure $next)
    {
        $token = $request->header('access-token');
        if($token != '123456abc'){
            throw new HttpException(401,"沒有訪問權(quán)限");
        }
        return $next($request);
    }

如下圖所示:
圖片描述
然后定義如下路由:

//獲取學(xué)生列表接口
Route::get('students/:name', 'app\controller\Study\StudentController@getStudents')->ext('html')->middleware(\app\Middleware\Auth::class);

如下圖所示:
圖片描述
如下圖演示返回正確的請(qǐng)求:
圖片描述
如下圖演示返回錯(cuò)誤的請(qǐng)求:
圖片描述

4.小結(jié)

本小節(jié)介紹了常見的路由驗(yàn)證,其中變量規(guī)則驗(yàn)證一般用于驗(yàn)證 url 中表示請(qǐng)求參數(shù)的變量,url 后綴驗(yàn)證主要用于驗(yàn)證不滿足指定后綴的 url請(qǐng)求,如 .htmltxt,路由中間件一般用于處理中間層的業(yè)務(wù)邏輯,如 權(quán)限驗(yàn)證。

Tips: 代碼倉庫:https://gitee.com/love-for-poetry/tp6