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