默认返回格式
当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);
}
嗯。效果非常不错,这样就符合我们的请求习惯了