验证请求时 Laravel 中的 REST API

2022-08-30 11:18:55

我目前正在尝试如何使用Laravel构建RESTful API,我目前正在创建新用户。这只是一个测试,当我尝试在Laravel中使用验证来验证请求时,我得到了一些结果;这是结果:

enter image description here

我一直在尝试通过以下代码创建一个新代码:

public function store()
{

    $validation = Validator::make(Request::all(),[ 
        'username' => 'required|unique:users, username',
        'password' => 'required',
    ]);

    if($validation->fails()){


    } else{
            $createUser = User::create([
                'username' => Request::get('username'),
                'password' => Hash::make(Request::get('password')) 
            ]);
    }
}

但是我不知道如何在验证中返回错误。但是它一直给我那个HTML,如图像所示,当我试图做if with .有没有办法以JSON格式获取验证?validation->fails()


答案 1

这些代码将帮助你,为我工作。

$response = array('response' => '', 'success'=>false);
$validator = Validator::make($request->all(), $rules);

if ($validator->fails()) {
  $response['response'] = $validator->messages();
} else {
//process the request
}

return $response;

答案 2

您可能应该返回错误(这是 的一个实例)并对其进行编码。实例允许您将其直接转换为其 JSON 表示形式。Illuminate\Support\MessageBagMessageBag

$errors = $validation->errors();

return $errors->toJson();

现在不要吹嘘我自己的喇叭,但我最近为Laravel开发了一个RESTful API包,它可以为你完成所有这些工作,你需要做的就是抛出一个简单的例外。请参阅我的 dingo/api 包和 Wiki 关于返回错误的信息。基本上,而不是返回错误,你会抛出一个异常。

throw new Dingo\Api\Exception\StoreResourceFailedException('Could not create a new user.', $validation->errors());

它将由以下 JSON 表示。

{
    "message": "Could not create a new user.",
    "errors": {
        "username": ["The username is already in use."]
    }
}

推荐