自定义 Laravel API 验证响应

Tha*_*cky 4 php validation laravel laravel-request

我正在使用 Laravel 构建 REST API,想知道是否有办法在验证时自定义 API 响应。

例如,我在 Laravel 请求中有一个验证规则,表示需要特定字段。

public function rules() {
   return [
       'title'=>'required|min:4|max:100',
   ];
}
Run Code Online (Sandbox Code Playgroud)

因此,对于此验证,我在 Postman 中收到如下错误消息

{
    "title": [
        "Please enter Ad Title"
    ]
}
Run Code Online (Sandbox Code Playgroud)

我想要的是像这样自定义该响应..

{
    "success": false,
    "message": "Validation Error"
    "title": [
        "Please enter Ad Title"
    ]
}
Run Code Online (Sandbox Code Playgroud)

因此,错误更加具体和清晰。

那么,如何实现这一目标呢?

谢谢!

小智 5

我得到了一个解决方案,只需编写几行代码即可更改 REST-API 验证 Laravel FormRequest 验证响应。在此处输入代码

请将这两行添加到您的App\Http\Requests\PostRequest.php中

use Illuminate\Contracts\Validation\Validator;
use Illuminate\Http\Exceptions\HttpResponseException;
Run Code Online (Sandbox Code Playgroud)

之后将此函数添加到您的文件中。

您可以将 $response 变量更改为您的特定方式。

protected function failedValidation(Validator $validator) { 
        $response = [
            'status' => false,
            'message' => $validator->errors()->first(),
            'data' => $validator->errors()
        ];
        throw new HttpResponseException(response()->json($response, 200)); 
    }
Run Code Online (Sandbox Code Playgroud)