当前位置:Gxlcms > PHP教程 > laravelAPI接口使用Validator无法返回具体的未通过验证的错误信息

laravelAPI接口使用Validator无法返回具体的未通过验证的错误信息

时间:2021-07-01 10:21:17 帮助过:4人阅读

API 接口中使用 Validator 对表单进行验证;
当有为通过验证的项时;
都是返回

  1. <code>{
  2. "message": "The given data failed to pass validation.",
  3. "status_code": 500
  4. }</code>

无法返回具体的未通过验证的信息;
那前端或者移动端接到返回的错误信息的时候;
并不能告诉用户到底是哪一项不符合要求;
我想要的是这样的;

  1. <code>{
  2. "message": "邮箱已经注册",
  3. "status_code": 500
  4. }
  5. {
  6. "message": "必须是6-16位的密码",
  7. "status_code": 500
  8. }</code>

请教亲们;需要怎么做?

亲们用 laravel 写接口的时候;
提交的表单字段是怎么验证的?怎么返回验证结果的?

回复内容:

API 接口中使用 Validator 对表单进行验证;
当有为通过验证的项时;
都是返回

  1. <code>{
  2. "message": "The given data failed to pass validation.",
  3. "status_code": 500
  4. }</code>

无法返回具体的未通过验证的信息;
那前端或者移动端接到返回的错误信息的时候;
并不能告诉用户到底是哪一项不符合要求;
我想要的是这样的;

  1. <code>{
  2. "message": "邮箱已经注册",
  3. "status_code": 500
  4. }
  5. {
  6. "message": "必须是6-16位的密码",
  7. "status_code": 500
  8. }</code>

请教亲们;需要怎么做?

亲们用 laravel 写接口的时候;
提交的表单字段是怎么验证的?怎么返回验证结果的?

Laravel 是可以自定义错误格式的,需要在控制器基类中重写 formatValidationErrors 方法

  1. <code>use Illuminate\Contracts\Validation\Validator;
  2. protected function formatValidationErrors(Validator $validator)
  3. {
  4. $message = $validator->errors()->first();
  5. return ['message'=>$message, 'status_code' => 500];
  6. }</code>

你还可以按照你自己的需求进行扩展,上面只是一个简单的例子,返回的是第一个错误信息.

如果你使用 dingo/api 验证处理

当然你也可以在

  1. <code>if ($validator->fails()) {
  2. //自行封装个处理验证失败返回值 类似下面
  3. $this->respondWithValidatorError($validator->errors());
  4. }
  5. </code>

人气教程排行