在Laravel中验证请求的REST API

9 浏览
0 Comments

在Laravel中验证请求的REST API

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

\"enter

我一直在尝试使用以下代码创建新代码:

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')) 
            ]);
    }
}

但我不知道如何返回验证中的错误。但是当我尝试使用validation->fails()来执行if操作时,它不断地给我显示那个图片中显示的HTML。有没有一种方法以JSON格式获取验证结果?

admin 更改状态以发布 2023年5月23日
0
0 Comments

你应该返回错误(这是一个 Illuminate\Support\MessageBag 实例)并对其进行编码。一个 MessageBag 实例可以直接转换为其 JSON 表示。

$errors = $validation->errors();
return $errors->toJson();

现在,不为吹嘘自己,但我最近为 Laravel 开发了一个 RESTful API 包,它可以为您完成所有这些操作,您所需要做的就是抛出一个简单的异常。请查看我的 dingo/api 包,以及有关 返回错误信息 的维基页面。基本上,您可以抛出异常,而不是返回错误。

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."]
    }
}

0
0 Comments

这些代码将帮助您,我正在使用它们。

$response = array('response' => '', 'success'=>false);
$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) {
  $response['response'] = $validator->messages();
} else {
//process the request
}
return $response;

0