Tôi đang cố triển khai API RESTful trong Perl. Ý tưởng hiện tại của tôi là phân tích cú pháp path_info với một regex sau đó gửi yêu cầu tới chương trình con thích hợp, sau đó sẽ rút ra JSON, XML hoặc thậm chí XHTML cho tài nguyên được yêu cầu.Làm cách nào để triển khai API RESTful trong Perl?
Ví dụ để lấy thông tin về người sử dụng 1234 client RESTful nên tìm thấy nó tại địa chỉ:
http://example.com/model.pl/users/1234
Dưới đây là mã bộ xương của nỗ lực đầu tiên của tôi tại thực hiện một API RESTful:
model.pl:
#!/usr/bin/perl -w
use strict;
use CGI;
my $q = CGI->new();
print $q->header('text/html');
my $restfuluri = $q->path_info;
if ($restfuluri =~ /^\/(questions)\/([1-9]+$)/) { questions($1, $2); }
elsif ($restfuluri =~ /^\/(users)\/([1-9]+$)/) { users($1, $2); }
sub questions
{
my $object = shift;
my $value = shift;
#This is a stub, spits out JSON or XML when implemented.
print $q->p("GET question : $object -> $value");
}
sub users
{
my $object = shift;
my $value = shift;
#This is a stub, spits out JSON or XML when implemented.
print $q->p("GET user: $object -> $value");
}
Trước khi tiếp tục, tôi muốn nghe tin từ các tin tặc Perl giàu kinh nghiệm dù tôi có ý tưởng cơ bản đúng không và nếu có bất kỳ thiếu sót nghiêm trọng nào với phương pháp này về hiệu suất.
Tôi có thể tưởng tượng, sau một thời gian, khối if/else sẽ phát triển rất lớn.
Mong muốn được nghe quan điểm của bạn để làm cho mã này tốt hơn.
Tôi có thể gợi ý rằng nếu bạn Mục tiêu là xây dựng một API RESTful bạn nên dành chút thời gian hơn học về REST . Các giao diện RESTful không sử dụng các URL đẹp để phân phối XML và JSCON. –
Kiểm tra các câu hỏi khác trên StackOverflow để giải thích chi tiết REST. – aehlke
Xin vui lòng không làm cho tôi sai, tôi biết REST là gì và tôi nhận thức được việc sử dụng và lạm dụng của REST. Tôi chỉ cần một cách nhanh chóng và dơ bẩn để cung cấp API RESTful cho ứng dụng cũ. Nó có một lớp dữ liệu phát triển tốt, tất cả những gì tôi cần làm là cho phép mọi người truy cập dữ liệu được định dạng là JSON hoặc XML bằng cách sử dụng các URI đẹp. Tôi duy trì những thứ đáng tin cậy hơn sexy. Tôi đã lấy intiative để đọc các dịch vụ Web RESTful O'Reilly cuốn sách và hầu hết các cuốn sách của Brian trước khi thậm chí yêu cầu. Tôi nghĩ rằng đây là một câu hỏi hợp pháp. Hơn nữa, hầu hết các cuộc thảo luận đều nói về Ruby. Cảm ơn. – GeneQ