Estoy tratando de implementar una API RESTful en Perl. Mi idea actual es simplemente analizar el path_info con una expresión regular y luego enviar la solicitud a la subrutina apropiada, que luego escupirá el JSON, XML o incluso XHTML para el recurso solicitado.¿Cómo puedo implementar una API RESTful en Perl?
Por ejemplo para recuperar información sobre el usuario 1234 el cliente REST debe encontrar en:
http://example.com/model.pl/users/1234
A continuación se muestra el código esqueleto de mi primer intento de implementar un API REST:
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");
}
Antes de seguir adelante, me gustaría saber de piratas informáticos Perl experimentados si obtuve la idea básica correcta y si hay algún inconveniente grave con este enfoque en términos de rendimiento.
Me puedo imaginar, después de un tiempo, el bloque if/else crecería realmente grande.
Esperamos escuchar sus opiniones para mejorar este código.
¿Puedo sugerir que si el objetivo es construir una API REST que pasar algún más tiempo a aprender sobre el descanso . Las interfaces RESTful no se tratan de usar URL bonitas para entregar XML y JSCON. –
Consulte otras preguntas sobre StackOverflow que explican REST en detalle. – aehlke
Por favor, no me malinterpreten, sé lo que es REST y soy consciente de los usos y abusos de REST. Solo necesito una manera rápida y sucia de proporcionar una API RESTful para una aplicación heredada. Tiene una capa de datos bien desarrollada, lo único que tengo que hacer es permitir que las personas accedan a los datos formateados como JSON o XML utilizando URI bonitos. Mantengo cosas que tienen que ser más confiables que sexy. Tomé la iniciativa para leer el libro O'Reilly de los servicios web RESTful y la mayor parte del libro de Brian incluso antes de preguntar. Creo que esta es una pregunta legítima. Además, la mayoría de las discusiones hablan sobre Ruby. Gracias. – GeneQ