使用Perl的Mojolicious Lite中的可选POST参数

问题描述 投票:0回答:2

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

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

sub post_callback {
    my ($mojo) = @_;
    my $param1 = $mojo->param("param1");
    my $param2 = $mojo->param("param2");
}
perl mojolicious mojolicious-lite
2个回答
0
投票

我的问题是,我误解了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请求。


0
投票

在帖子中,我不想使用参数,而是将所有参数发布在一个JSON字符串中。 mojolicous post-action将接收json-string作为哈希引用。

例:

# 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 -X POST -d '{ "username": "rob", "password": "secret" }' http://hp-probook:3000/users/authenticate
© www.soinside.com 2019 - 2024. All rights reserved.