在Laravel中验证请求的REST API
在Laravel中验证请求的REST API
我目前正在尝试使用Laravel构建RESTful API,我目前正在创建一个新用户的过程中。这只是一个测试,我在尝试使用Laravel中的验证来验证请求时得到了一些结果;这是结果:
我一直在尝试使用以下代码创建新代码:
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日
你应该返回错误(这是一个 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."] } }