2012-01-31 35 views
5

Tôi cần xây dựng một ứng dụng phía máy chủ (dịch vụ web nhỏ) để thử nghiệm các đề xuất. Một số mô-đun CPAN và thư viện Perl để thực hiện nhiệm vụ đó là gì?Xây dựng một dịch vụ web với Perl

+0

Bạn nên cụ thể hơn một chút về mục tiêu của mình. Ứng dụng sẽ có thể làm gì? – dgw

Trả lời

4

Có rất nhiều khả năng

  • CGI - nếu bạn muốn làm tất cả mọi thứ như thế nào trong những ngày xưa
  • CGI::Application - một chút tiến bộ hơn

hoặc bạn có thể sử dụng các khung như

  • Catalyst
  • Dancer
  • Mojolicious

Nó phụ thuộc vào kỹ năng của bạn và đặt mục tiêu giải pháp những gì bạn nên chọn.

2

Tôi thích sử dụng mojolicious. Đó là trọng lượng nhẹ lúc đầu và có thể làm việc nâng nặng sau này quá. Mojolicious::Lite đặc biệt là tốt cho nhanh chóng và bẩn.

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

Kiểm tra một dịch vụ Web nhỏ với 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

Một dịch vụ web chỉ đơn giản trả về một mã trạng thái HTTP và một số dữ liệu, có lẽ serialized trong JSON hay XML. Bạn có thể sử dụng mô-đun CGI để thực hiện việc này, ví dụ::

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

Tất nhiên, bạn có thể in phản hồi HTTP với các mã trạng thái và dữ liệu khác. Một dịch vụ web có thể cần phải trả lại lỗi 404, ví dụ, tùy thuộc vào những gì được yêu cầu. Đó là loại điều.

Các vấn đề liên quan