Создание веб-сервиса с Perl - PullRequest
5 голосов
/ 31 января 2012

Мне нужно создать серверное приложение (крошечный веб-сервис) для тестирования предложений.Какие существуют CPAN модули и библиотеки Perl для реализации такой задачи?

Ответы [ 4 ]

5 голосов
/ 31 января 2012

Веб-служба просто возвращает код состояния 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-ответ с другими кодами состояния и данными. Например, веб-службе может понадобиться вернуть ошибку 404, в зависимости от того, что запрашивается. Такого рода вещи.

5 голосов
/ 31 января 2012

Тестирование крошечного веб-сервиса с Plack :: Test :

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;
4 голосов
/ 31 января 2012

Есть много возможностей

  • CGI - если вы любите делать все как в старые времена
  • CGI::Application - немного более продвинутое

или вы можете использовать такие рамки, как

  • Catalyst
  • Dancer
  • Mojolicious

Это зависит от ваших навыков и целей, какое решение вы должны выбрать.

2 голосов
/ 31 января 2012

Мне нравится использовать 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...