1

有没有办法使用 Mojolicious Lite 在 Perl 中将 POST 参数表示为可选参数?例如,如果param2请求正文中没有定义,有没有办法让服务器不返回 404?

post "/my_post" => \&render(post_callback);

sub post_callback {
    my ($mojo) = @_;
    my $param1 = $mojo->param("param1");
    my $param2 = $mojo->param("param2");
}
4

2 回答 2

1

我的问题是我误解了 mojolicious 是如何路由到回调的。以下代码适用于两个可选参数:

#!/usr/bin/env perl
use strict;
use warnings;
use Mojolicious::Lite;

post '/' => sub {
    my ($mojo) = @_;
    my $param1 = $mojo->param("param1");
    my $param2 = $mojo->param("param2");
    $mojo->render(text => "param1: $param1, param2: $param2");
};

app->start;

如果您使用以下命令运行它:./my_server.pl daemon您将能够发送带有任意参数组合的 POST 请求。

于 2015-07-06T13:19:26.180 回答
1

在一篇文章中,我不喜欢使用参数,而是将所有参数发布在一个 JSON 字符串中。mojolicous post-action 将接收 json 字符串作为哈希引用。

例子:

# The posted data looks like:
# '{ "username": "rob", "password": "secret" }'
#
sub authenticate {
    my $self = shift;
    my $jsonHash = $self->req->json ;
    $self->render( text => Dumper($jsonHash)) ;
}

使用 curl 可以很容易地测试帖子:

curl -X POST -d '{ "username": "rob", "password": "secret" }' http://hp-probook:3000/users/authenticate
于 2018-09-05T08:14:06.163 回答