技術日誌 - API 中使用 Laravel form 表單驗證丟擲異常如何返回 API 格式資料

Marrigan發表於2020-06-03

laraevl 提供的 表單驗證確實好用,配置簡單,節省時間。但是對介面的支援不是很好,通常,我們在進行介面請求,驗證失敗的時候,需要返回固定格式的 json 錯誤資訊,這時候要怎麼處理呢?

首先,我們要知道 Laravel 異常的全域性捕獲是在:app/Exceptions/Handler.php 檔案,知道這點的話就很簡單了,既然所有異常的丟擲都會經過這個 Handler,那我們在這裡處理下就可以了。下面上程式碼:

在 app/Exceptions/Handler.php render方法中新增以下程式碼:

        ## 驗證錯誤
        if($request->is("api/*")){// 我們僅僅處理 api的異常,所以這裡要排除下其他字首路由
            if($exception instanceof ValidationException){//如果丟擲的異常是 ValidationException 的例項,我們就可以確定該異常是表單驗證異常
            ## 下面是你需要包裝的資料
                $result = [
                    "code"=>1,
                    "msg"=>array_values($exception->errors())[0][0],//這裡 ValidationException 異常的格式通常是陣列的形式,如果不確定如何取值可以列印下看下結構
                    "data"=>[]
                ];
                return response()->json($result);
            }
        }
本作品採用《CC 協議》,轉載必須註明作者和本文連結

talk is cheap,show me the code!

相關文章