Wie kann ich eine RESTful API in Perl implementieren?

7

Ich versuche eine RESTful-API in Perl zu implementieren. Meine derzeitige Idee ist es, einfach path_info mit einer Regex zu analysieren und dann die Anfrage an die entsprechende Subroutine zu senden, die dann JSON, XML oder sogar XHTML für die angeforderte Ressource ausspuckt.

Um beispielsweise Informationen über den Benutzer 1234 abzurufen, sollte der REST-konforme Client ihn unter

finden

Ссылка

Unten ist der Skelett-Code meines ersten Versuches, eine RESTful-API zu implementieren:

model.pl :

%Vor%

Bevor ich fortfahre, möchte ich von erfahrenen Perl-Hackern wissen, ob ich die Grundidee richtig verstanden habe und ob es ernsthafte Mängel in Bezug auf die Leistung gibt.

Ich kann mir vorstellen, dass der if / else-Block nach einiger Zeit sehr groß werden würde.

Ich freue mich darauf, Ihre Ansichten zu hören, um diesen Code besser zu machen.

    
GeneQ 11.08.2009, 08:51
quelle

6 Antworten

6

Ich würde etwas wie CGI :: Application :: Dispatch verwenden, es ermöglicht mir, eine Dispatch-Tabelle mit Variablen und REST-Methoden zu erstellen, und Sie können CGI- und CGI :: Application-Module von CPAN verwenden. Zum Beispiel:

%Vor%

(oder Sie können auto_rest oder auto_rest_lc verwenden)

Sie können eine separate CGI :: Application-Klasse für jede Art von Sache verwenden (oder verwenden Sie einfach Klassen in Ihren cgi-app-Controller-Klassenmethoden).

CGI :: Anwendung kommt auch mit Plugins für die Ausgabe von XML, JSON oder Text aus Vorlagen generiert.

cgi-app (und c :: a :: d) sind CGI-Anwendungen und können mit (wenig oder) keiner Änderung unter CGI, FastCGI oder mod_perl verwendet werden. C :: A :: D ist auch standardmäßig ein mod_perl PerlHandler.

    
MkV 11.08.2009, 14:33
quelle
16

Für leichte REST-APIs würde ich Mojolicious betrachten. Das Anforderungs-Routing ist wirklich unkompliziert und der eingebaute JSON-Renderer und User-Agent macht die Entwicklung einfacher REST-APIs nach meiner Erfahrung sehr einfach.

Wenn Ihre App relativ klein ist, kann Mojo :: Lite Ihren Anforderungen entsprechen. Zum Beispiel können Sie vielleicht so etwas tun:

%Vor%     
robert_b_clarke 22.02.2013 10:12
quelle
1

Ich würde die Anwendung mit Catalyst und Catalyst::Controller::REST

    
Quentin 11.08.2009 09:45
quelle
1

Warum nicht das bereits implementierte Modul Apache2 :: REST ? Es ist alles da.

    
Thariama 22.02.2013 08:47
quelle
1

Die einfache Lösung:

%Vor%     
Gerd 12.11.2014 07:32
quelle
-2

Warum benutzen Sie nicht Apache mod_rewrite?

Weiterleitung Ссылка - & gt; Ссылка

Weiterleitung Ссылка - & gt; Ссылка

    
maozet 11.08.2009 09:39
quelle

Tags und Links