使用Perl构建Web服务

时间:2012-01-31 00:45:04

标签: web-services perl

我需要构建一个服务器端应用程序(小型Web服务)来测试建议。有哪些CPAN模块和Perl库可用于实现此类任务?

4 个答案:

答案 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;