API 介面中使用 Validator 對錶單進行驗證;
當有為通過驗證的項時;
都是返回
{ "message": "The given data failed to pass validation.", "status_code": 500}
無法返回具體的未通過驗證的資訊;
那前端或者移動端接到返回的錯誤資訊的時候;
並不能告訴使用者到底是哪一項不符合要求;
我想要的是這樣的;
{ "message": "郵箱已經註冊", "status_code": 500}{ "message": "必須是6-16位的密碼", "status_code": 500}
請教親們;需要怎麼做?
親們用 laravel 寫介面的時候;
提交的表單欄位是怎麼驗證的?怎麼返回驗證結果的?
回複內容:
API 介面中使用 Validator 對錶單進行驗證;
當有為通過驗證的項時;
都是返回
{ "message": "The given data failed to pass validation.", "status_code": 500}
無法返回具體的未通過驗證的資訊;
那前端或者移動端接到返回的錯誤資訊的時候;
並不能告訴使用者到底是哪一項不符合要求;
我想要的是這樣的;
{ "message": "郵箱已經註冊", "status_code": 500}{ "message": "必須是6-16位的密碼", "status_code": 500}
請教親們;需要怎麼做?
親們用 laravel 寫介面的時候;
提交的表單欄位是怎麼驗證的?怎麼返回驗證結果的?
Laravel 是可以自訂錯誤格式的,需要在控制器基類中重寫 formatValidationErrors 方法
use Illuminate\Contracts\Validation\Validator;protected function formatValidationErrors(Validator $validator){ $message = $validator->errors()->first(); return ['message'=>$message, 'status_code' => 500];}
你還可以按照你自己的需求進行擴充,上面只是一個簡單的例子,返回的是第一個錯誤資訊.
如果你使用 dingo/api 驗證處理
當然你也可以在
if ($validator->fails()) { //自行封裝個處理驗證失敗傳回值 類似下面 $this->respondWithValidatorError($validator->errors()); }