最近在用 Laravel
写 API
接口,记录一下统一返回JSON响应 和 返回的错误格式
因为你不设定的话,除了ajax请求会返回 json
格式,其他方式访问出现错误会重定向到 /login
或者 /home
下面教你简单设置 首先响应格式 和统一返回错误提示
第一步编写 BaseRequest
<?php
namespace App\Http\Requests;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Exceptions\HttpResponseException;
class BaseRequest extends FormRequest
{
// 定义统一的返回错误格式,下面的可以不定义
protected function failedValidation(Validator $validator)
{
throw(new HttpResponseException(response()->json([
'code'=>422,
'msg'=>$validator->errors(),
'data'=>null
],422)));
}
// 是否所有response 都是JSON 返回
public function expectsJson()
{
return true;
}
public function wantsJson()
{
return true;
}
}
第二部 替换BaseRequest
在 public/index.php 文件中,将 IllumiateHttpRequest 替换为我们的 BaseRequest,如下:
$response = $kernel->handle(
$request = \App\Http\Requests\BaseRequest::capture()
);