路线:
$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
。
答案 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;
}