我需要构建一个服务器端应用程序(小型Web服务)来测试建议。有哪些CPAN模块和Perl库可用于实现此类任务?
答案 0 :(得分:5)
使用Plack::Test测试小型Web服务:
use Plack::Test;
use Test::More;
test_psgi(
app => sub {
my ($env) = @_;
return [200, ['Content-Type' => 'text/plain'], ["Hello World"]],
},
client => sub {
my ($cb) = @_;
my $req = HTTP::Request->new(GET => "http://localhost/hello");
my $res = $cb->($req);
like $res->content, qr/Hello World/;
},
);
done_testing;
答案 1 :(得分:5)
Web服务只返回HTTP状态代码和一些数据,可能是用JSON或XML序列化的。您可以使用CGI
模块执行此操作,例如:
#!/usr/bin/perl -w
use strict;
use warnings;
use CGI;
use CGI::Pretty qw/:standard/;
use URI::Escape;
my $query = CGI->new;
my $jsonQueryValue = uri_unescape $query->param('helloWorld');
# let's say that 'helloWorld' is a uri_escape()-ed POST variable
# that contains the JSON object { 'hello' : 'world' }
print header(-type => "application/json", -status => "200 OK");
print "$jsonQueryValue";
当然,您可以使用其他状态代码和数据打印HTTP响应。例如,Web服务可能需要返回404错误,具体取决于要求的内容。那种事。
答案 2 :(得分:4)
有很多可能性
CGI
- 如果你喜欢像过去那样做所有事情CGI::Application
- 更高级的一点或者你可以使用像
这样的框架Catalyst
Dancer
Mojolicious
这取决于您的技能,并针对您应该选择的解决方案。
答案 3 :(得分:2)
我喜欢使用mojolicious。它起初很轻,也可以在以后进行繁重的工作。 Mojolicious::Lite特别适合快速和肮脏。
use Mojolicious::Lite;
# Route with placeholder
get '/:foo' => sub {
my $self = shift;
my $foo = $self->param('foo');
$self->render(text => "Hello from $foo.");
};
# Start the Mojolicious command system
app->start;