处理验证程序以返回json

时间:2019-01-17 13:31:43

标签: php laravel authentication

Laravel在$validator->fails()调用时抛出异常。

好吧,我只想在ApiController.php中使用Laravel 5.7创建一个无状态寄存器方法。

我使用Validator门面来检查发送的数据。

    $validator = Validator::make($request->all(), [
            'name' => 'required',
            'email' => 'required|email|unique',
            'password' => 'required',
            'c_password' => 'required|same:password',
        ]);
        if ($validator->fails())  {
            return response()->json(['error'=>$validator->errors()], 
                                           Response::HTTP_UNAUTHORIZED);
        }

但是,当我使用xdebug时,我看到了一些奇怪的东西。 fail方法似乎引发异常。

Laravel发送带有标题的错误HTML页面:

  

唯一验证规则至少需要1个参数。

该路线在api.php

中使用
Route::post('register', 'Api\UserController@register');

您对此有解释吗? 阅读感谢。

2 个答案:

答案 0 :(得分:1)

唯一规则的语法为unique:table,column,except,idColumn。 因此,我为您更改了它以使用users表。 如果您不想使用用户表,请更改users后面的unique:

$validator = Validator::make($request->all(), [
            'name' => 'required',
            'email' => 'required|email|unique:users',
            'password' => 'required',
            'c_password' => 'required|same:password',
]);
if ($validator->fails())  {
    return response()->json(['error'=>$validator->errors()], 
        Response::HTTP_UNAUTHORIZED);
}

有关唯一规则的更多信息,请参见:https://laravel.com/docs/5.7/validation#rule-unique

答案 1 :(得分:0)

在您的API请求中添加以下标头:

...
Accept: application/json // <-----

这将告诉Laravel您想要json格式的响应。


注意:这与Content-type: application/json不同。后面的数字表示主体中正在发送的数据格式。