如何验证REST Lumen / Laravel请求中的参数?

wuj*_*ujt 2 validation url get laravel lumen

路线: $app->get('/ip/{ip}', GeoIpController::class . '@show');

如何正确验证IP?我试图Requestshow方法中注入对象,但无法解决此问题。我想坚持使用REST,所以使用URL参数对我来说不是解决方案。我将其用于API目的,因此将状态代码作为响应将是适当的。

也尝试过这种方式:

$app->bind('ip', function ($ip) {
    $this->validate($ip, [
        'ip' => 'required|ip',
    ]);
});
Run Code Online (Sandbox Code Playgroud)

编辑:下面的答案是正确的,我requests在文档中找到了更多有关的信息:

流明不支持表单请求。如果您想使用表单请求,则应使用完整的Laravel框架。

换句话说,您不能requests在流明的构造函数中使用通过注入自定义。

San*_*esh 5

validate方法将请求对象作为第一个参数。由于您要在路由中传递ip,因此需要创建一个自定义验证器。

public function show($ip)
{
    $data = ['ip' => $ip];

    $validator = \Validator::make($data, [
        'ip' => 'required|ip'
    ]);

    if ($validator->fails()) {
        return $validator->errors();
    }

    return response()->json(['All good!']);
}
Run Code Online (Sandbox Code Playgroud)

编辑:这是laravel在后台执行的所有操作。您基本上可以使用此功能直接验证ip并节省大量精力。

protected function validateIp($ip)
{
    return filter_var($ip, FILTER_VALIDATE_IP) !== false;
}
Run Code Online (Sandbox Code Playgroud)

  • 我使用了“ Illuminate \ Support \ Facades \ Validator;”,它的工作原理就像金子一样。谢谢。 (3认同)