perl - Mojolicious 参数验证

标签 perl mojolicious mojolicious-lite

我有以下代码:

get '/:foo' => sub {
  my $c   = shift;
  my $v = $c->validation;
  
  my $foo = $c->param('y');
  $c->render(text => "Hello from $foo.") if  $v->required('y')->like(q/[A-Z]/);
};

并想验证 http 请求的 y 参数,我使用以下方式连接到上述网页:http://myserver:3000?x=2&y=1

它打印 Hello from 1. 即使有 $v->required('y')->like(q/[A-Z]/);

这可能是我的问题?

最佳答案

Mojolicious 验证使用 a fluent interface ,所以大多数方法都返回验证对象。对象默认为真,因此您的条件始终为真。

相反,您可以检查

  • ->is_valid() – 当前主题的验证是否成功,或者
  • ->has_error() – 是否有任何验证错误。

您通过在验证对象上调用 ->required('name')->optional('name') 来引入新的验证主题。所以你可以写:

$c->render(text => "Hello from $foo.")
  if $v->required('y')->like(q/[A-Z]/)->is_valid;

$v->required('y')->like(q/[A-Z]/);
$c->render(text => "Hello from $foo.") unless $v->has_error;

关于perl - Mojolicious 参数验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49847290/

相关文章:

python - 正则表达式查找两个字符串的最长公共(public)前缀

html - 有趣且延迟的 WebSocket

perl - '->to()' 可以在 Mojolicious::Lite 中使用吗?

perl - 我的 Mojolicious 应用程序未创建和写入日志文件

regex - 按第二列中的时间戳合并多个日志文件

bash - 包含通过函数初始化传递的变量插入 perl 字符串的 bash 变量的函数

perl - Postgresql::抽象 "Not In Range"操作

perl - Mojolicious 收到帖子结果

javascript - 如何将 HTML 元素添加到与文本混合的存储中?

perl - 如何在 Mojolicious::Lite 中启用 "pretty"JSON 渲染?