验证请求时,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格式获得验证?


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

$errors = $validation->errors();

return $errors->toJson();

现在不要嘟my我自己的号角,但我最近为Laravel开发了一个RESTful API包,它为您做了所有这些工作,并且您只需要抛出一个简单的异常。 看到我的dingo / api包和Wiki返回错误。 基本上,而不是返回错误,你会抛出一个异常。

throw new DingoApiExceptionStoreResourceFailedException('Could not create a new user.', $validation->errors());

它将由以下JSON表示。

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

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

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

Laravel提供了一个可以从Controller调用的验证方法。

如果你检查Laravel Controller抽象类,你会发现它使用了一个名为ValidatesRequests的特性

   abstract class Controller extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}

所以你可以使用$this->validate(Request $request, array $rules); 只要你的控制器类扩展了控制器

完整的方法声明是

public function validate(Request $request, array $rules, array $messages = [], array $customAttributes = [])
    {
        $validator = $this->getValidationFactory()->make($request->all(), $rules, $messages, $customAttributes);

        if ($validator->fails()) {
            $this->formatValidationErrors($validator);
        }
    }

如果$ validator失败,则该方法将根据请求类型引发错误(如果它是ajax)(在这种情况下,您应该在请求头中包含Accept application/json ),它将返回包含验证错误的JSON响应。

链接地址: http://www.djcxy.com/p/8547.html

上一篇: REST API in Laravel when validating the request

下一篇: How to pass post json Object Data to an api using java/Spring/rest