Laravel 5.8验证在使用Passport失败后返回首页

时间:2019-07-06 17:09:43

标签: json laravel api validation request

我有一个store()方法。

public function create(StorePost $request)
{
    $post = Post::create([
        'title' => $request->title,
        'description' => $request->description,
    ]);

    return response()->json([
        'post' => $post
    ], 201);
}

在StorePost类中,我验证了请求。

public function rules()
{
    return [
        'title' => 'required|string|max:255',
        'description' => 'required',
    ];
}

例如,当我用错误的条目对邮递员进行测试时,例如,如果我用空值填充“说明”,则它将返回首页,而没有任何响应或错误。如何获取验证错误?

2 个答案:

答案 0 :(得分:0)

我只需在请求的标题中添加'Accept':'application / json'即可解决此问题。

答案 1 :(得分:0)

发生这种情况是因为Laravel表单请求可同时用于API和非API请求。

根据表单提出的请求,它将重定向回(如果不是从表单发送的,则返回原始表单的url或首页),并带有一个视图上可用的$errors变量的错误包。

在由ajax发出的请求(通常在API上)上通常具有标头Accept: application/json,因此Laravel会自动知道您希望将验证错误信息包作为json在响应主体上,而不是将重定向视为不合理的重定向API。

希望这可以向您澄清事情。