如何在REST Lumen / Laravel请求中验证params?

时间:2017-05-22 09:29:45

标签: laravel validation url get lumen

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

如何正确验证ip?我曾尝试在Request方法中注入show个对象,但无法解决此问题。我想坚持REST,因此使用URL参数对我来说不是解决方案。我将它用于API目的,因此状态代码作为响应是合适的。

也尝试过这种方式:

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

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

  

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

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

1 个答案:

答案 0 :(得分:4)

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

编辑:这是所有laravel确实在幕后。你基本上可以直接使用这个函数来验证ip并节省很多精力。

protected function validateIp($ip)
{
    return filter_var($ip, FILTER_VALIDATE_IP) !== false;
}