默认返回格式
当validation不通过的时候,官方返回的422状态码是不通过ajax请求的,这显然不符合我们的习惯。

通过查看源码,最终发现返回格式是在这里设置的
vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php

所以,可以在我们需要改变的地方改变它,全局位置设置在app/Exceptions/Handler.php
/**
* Render an exception into an HTTP response.
*可以放在使用的控制器中使用
* @param \Illuminate\Http\Request $request
* @param \Exception $exception
* @return \Illuminate\Http\Response
*/
public function render($request, Exception $exception)
{
return self::renders($request, $exception);
}
//该函数放任何位置都可以,只要能使用就好了
public function renders($request, Exception $exception)
{
if($request->ajax() || $request->wantsJson()){
$result = [
"code"=>422,
"msg"=>array_values($exception->errors())[0][0],
"data"=>""
];
return response()->json($result);
}
return parent::render($request, $exception);
}
嗯。效果非常不错,这样就符合我们的请求习惯了

当Laravel的validation不通过时,默认返回422状态码并不适合AJAX请求习惯。通过修改`app/Exceptions/Handler.php`文件,重写`render`方法,可以在AJAX请求时返回自定义的错误信息,包括code,msg和data,以更符合开发者的使用习惯。
1504

被折叠的 条评论
为什么被折叠?



