2012-01-31 15 views
5

Ho bisogno di creare un'applicazione lato server (piccolo servizio Web) per i test proposti. Quali sono alcuni moduli CPAN e librerie Perl per l'implementazione di tale attività?Creazione di un servizio Web con Perl

+0

Dovresti essere un po 'più specifico sui tuoi obiettivi. Cosa dovrebbe essere in grado di fare l'app? – dgw

risposta

4

Ci sono un sacco di possibilità

  • CGI - se ti piace fare tutto come ai vecchi tempi
  • CGI::Application - un po 'più avanzato

o si può utilizzare strutture come

  • Catalyst
  • Dancer
  • Mojolicious

dipende dalla vostra abilità e mira quale soluzione si dovrebbe scegliere.

2

Mi piace usare mojolicious. All'inizio è leggero e può essere utilizzato anche per il sollevamento pesante. Mojolicious::Lite in particolare è buono per veloce e sporco.

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

sperimentazione di un servizio Web minuscolo 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 servizio web restituisce semplicemente un codice di stato HTTP e alcuni dati, forse serializzati in JSON o XML. È possibile utilizzare il modulo CGI per fare ciò, ad es.:

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

È possibile, ovviamente, stampare una risposta HTTP con altri codici di stato e dati. Un servizio web potrebbe dover restituire un errore 404, ad esempio, a seconda di cosa viene richiesto. Questo genere di cose.

Problemi correlati