2012-01-31 18 views
5

Necesito crear una aplicación del lado del servidor (servicio web pequeño) para proponer pruebas. ¿Cuáles son algunos de los módulos CPAN y las bibliotecas de Perl para implementar dicha tarea?Creación de un servicio web con Perl

+0

Debe ser un poco más específico acerca de sus objetivos. ¿Qué debería hacer la aplicación? – dgw

Respuesta

4

Hay muchas posibilidades

  • CGI - si te gusta hacer de todo como en los viejos tiempos
  • CGI::Application - un poco más avanzado

o usted podría utilizar marcos como

  • Catalyst
  • Dancer
  • Mojolicious

que depende de sus habilidades y su objetivo es lo que la solución que debe elegir.

2

Me gusta usar mojolicious. Es liviano al principio y también puede hacer el trabajo pesado más tarde. Mojolicious::Lite en particular es bueno para rápido y sucio.

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; 
4

Prueba de un pequeño servicio web con 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; 
5

Un servicio web simplemente devuelve un código de estado HTTP y algunos datos, tal vez serializado en JSON o XML. Puede usar el módulo CGI para hacer esto, p.:

#!/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"; 

Puede, por supuesto, imprimir una respuesta HTTP con otros códigos de estado y datos. Un servicio web puede necesitar devolver un error 404, por ejemplo, dependiendo de lo que se solicita. Esa clase de cosas.

Cuestiones relacionadas