我想在Perl中實現一個RESTful API。我目前的想法是簡單地用正則表達式解析path_info,然後將請求發送到適當的子程序,然後將該子程序吐出JSON,XML甚至XHTML以獲取請求的資源。如何在Perl中實現RESTful API?
例如檢索關於用戶1234信息的RESTful客戶端應該找到它:
http://example.com/model.pl/users/1234
下面是我第一次嘗試在實現RESTful API框架代碼:
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");
}
在我進一步討論之前,我想聽聽有經驗的Perl黑客是否有正確的基本想法,以及這種方法在性能方面是否存在嚴重缺陷。
我可以想象,一段時間後,if/else塊會變得非常大。
期待聽到您的意見,使此代碼更好。
我可以建議,如果你的目標是建立你花更多的時間來學習REST一個RESTful API 。 RESTful接口並不是使用漂亮的URL來傳遞XML和JSCON。 – 2009-08-11 13:03:19
查看詳細解釋REST的StackOverflow的其他問題。 – aehlke 2009-08-11 14:18:37
請不要誤解我的意思,我知道REST是什麼,我意識到REST的使用和濫用。我只需要爲遺留應用程序提供RESTful API的快速和骯髒的方式。它有一個完善的數據層,我需要做的就是允許人們使用漂亮的URI訪問格式爲JSON或XML的數據。我維護的東西必須比性感更可靠。我已經開始閱讀RESTful Web服務O'Reilly的書籍和Brian的大部分書籍,甚至提出要求。我認爲這是一個合法的問題。此外,大部分討論都談論Ruby。謝謝。 – GeneQ 2009-08-11 15:11:46