Guiadiseorestapi
Guiadiseorestapi
Guiadiseorestapi
En su tesis, “Architectural Styles and the Design of Network-based Software Architectures”,1 Roy Fielding
define la REST (transferencia de estado representacional) de la siguiente manera: “Considere cuán a
menudo vemos que los proyectos de software comienzan con la adopción de la última moda en diseño
arquitectónico, y únicamente después
se descubre si los requisitos del sistema requieren o no este tipo de arquitectura”.
¿No tiene tiempo para leer la tesis completa de Fielding? No hay problema. Creamos esta descripción
general de alto nivel pensando en usted. Para comenzar, analicemos la REST más detalladamente.
Puede parecer curioso consultar con un psicólogo en un trabajo sobre el diseño de API (interfaz
de programación de aplicaciones) y REST (transferencia de estado representacional), pero
sirve para ilustrar dos puntos diferentes:
(1) todas las decisiones de diseño, independientemente de que estén relacionadas con el
software o la arquitectura, se deben tomar en el contexto de los requisitos funcionales,
de comportamiento y sociales, y no como tendencias aleatorias; (2) cuando solo se sabe
cómo hacer una cosa bien, lo demás tiende
a verse idéntico.
2
Estilo frente a estándar
Un estilo arquitectónico es un concepto abstracto, y no algo concreto. Por ejemplo, ¿Cuál es su estilo?
considere una catedral gótica. La catedral es diferente del estilo arquitectónico gótico.
El estilo gótico define los atributos o las características que apreciaría en una catedral Los tres estilos de arquitectura web
construida con dicho estilo. comunes son estos:
• túneles (SOAP [protocolo simple
De manera comparativa, el NIST (Instituto Nacional de Normas y Tecnología) y los NEC de acceso a objetos]);
(Códigos eléctricos nacionales) regulan los organismos que formulan las reglas • objetos (CRUD [crear, leer, actualizar
que reconocemos como estándares. Si no se hacen las conexiones eléctricas o eliminar]);
correctamente en una construcción, el establecimiento podría incendiarse hasta • hipermedios (REST [transferencia
derrumbarse. A menudo, las personas confunden el concepto de estándares (lo que de estado representacional]).
sabemos que es correcto o incorrecto) con el concepto de estilos, que se refiere a un
modo de expresión en particular. Vea este video2 para comprender
las características clave de los estilos
arquitectónicos comunes y decidir
En Internet, la REST es un estilo y el HTTP (protocolo de transferencia de hipertexto)
cuál se adapta mejor a sus necesidades.
es un estándar. La REST depende de protocolos de comunicaciones con caché de
cliente-servidor, sin estado, como el protocolo HTTP, para facilitar el desarrollo de las
aplicaciones. Al aplicar los principios del diseño de REST a un protocolo como HTTP,
los desarrolladores pueden crear interfaces para su uso en prácticamente cualquier
dispositivo o sistema operativo.
3
Los estilos se describen mediante
limitaciones
Un estilo arquitectónico se describe mediante las características que hacen que una construcción
u otra estructura se pueda distinguir e identificar. Las formas características de una arquitectura
gótica, por ejemplo, incluyen arco en punta, bóveda de crucería, contrafuertes, ventanas grandes
que a menudo están agrupadas, rosetones, torres, chapiteles, pináculos y fachadas ornamentadas.
De forma similar, la REST se describe mediante un conjunto de limitaciones arquitectónicas que tratan de minimizar
la latencia y las comunicaciones de la red y, al mismo tiempo, maximizar la independencia y escalabilidad de las
implementaciones de los componentes. Las seis limitaciones de la REST incluyen lo siguiente:
1. Cliente-servidor: requiere que un servicio ofrezca una o más operaciones, y que los servicios esperen que los clientes
soliciten dichas operaciones.
2. Sin estado: requiere que las comunicaciones entre el consumidor del servicio (cliente) y el proveedor del servicio (servidor)
no tengan estado.
3. Caché: requiere que las respuestas se etiqueten claramente como con caché o son caché.
4. Interfaz uniforme: requiere que todos los proveedores del servicio y consumidores dentro de una arquitectura que cumple
con la REST compartan una sola interfaz común para todas las operaciones.
5. Sistema en capas: requiere la capacidad de agregar o quitar intermediarios en el tiempo de ejecución sin alterar el sistema.
6. Código según la demanda (opcional): permite que la lógica dentro de los clientes (como exploradores web) se actualice
independientemente de la lógica del servidor utilizando un código ejecutable enviado por los proveedores del servicio a los
consumidores.
Replicada En capas
Interfaz uniforme
RR CS LS VM U
La limitación de la interfaz uniforme es fundamental para el diseño de cualquier servicio de REST. Simplifica y desacopla los
conectores, lo que permite que cada pieza evoluciones de forma independiente. Debido a la manera en que la Web se utiliza en la
actualidad, las cuatro limitaciones mencionadas anteriormente constituyen las herramientas esenciales que les permiten a los
desarrolladores implementar la interfaz uniforme de Fielding. En las siguientes páginas, se explican estas herramientas más
detalladamente.
6
URI para la identificación
Tal como se describe en RFC23964, “un URI (identificador uniforme de recursos) es una cadena compacta de caracteres que permiten
identificar un recurso abstracto o físico”. El identificador se puede implementar en una de dos maneras: un URL (localizador uniforme de
recursos) o un URN (nombre uniforme de recursos). Los URL (p. ej., http://example.org/users/mike) se utilizan para identificar la
ubicación en línea de un recurso individual, mientras que los URN (p. ej., urn:usuario:mike) se desarrollan con el fin de funcionar como
identificadores persistentes, independientes de la ubicación. El URN funciona como el nombre de una persona y el URL se asemeja al
domicilio de una persona. En otras palabras, el URN define la identidad de un elemento (“el nombre de usuario es mike”) y el URL
proporciona un método para buscarlo (“mike se puede encontrar en ejemplo.org/usuarios/”).
– Ruta: se refiere a una secuencia de segmentos separados por una barra (“/”).
• Consulta: contiene información de identificación adicional que no es jerárquica por naturaleza y, a menudo, está separada por un signo de interrogación (“?”).
• Fragmento: proporciona la orientación hacia un recurso secundario dentro de uno principal identificado por la autoridad y la ruta, y está separado del resto mediante el
signo de numeral (“#”).
URL: foo://example.com:8042/over/there?name=ferret#nose
URN:
urn:example:animal:ferret:nose
7
Tipos de medios para representación
Según RFC20465, los identificadores del tipo MIME (extensiones multipropósito de
correo de Internet) (tipos de medios) se deben utilizar para “especificar la naturaleza
de los datos en el cuerpo de una entidad de MIME, junto con la información auxiliar
que pueda requerirse”.
• Utilizar vnd. como prefijo del subtipo para los tipos de MIME específicos del proveedor, que forma parte de un producto comercial (p. ej.,
vnd.bigcompany.report/json).
• Utilizar prs. como prefijo del subtipo para los tipos de MIME personales o de vanidad, que no forma parte de un producto comercial (p. ej.,
prs.smith.data/json).
8
Encabezados + cuerpo Ejemplo de intercambio
“GET” de HTTP
• POST: solicita que el servidor de origen acepte la entidad adjunta en la solicitud como un nuevo subordinado </body>
del recurso identificado por el URI de solicitud. </html>
• DELETE: solicita que el servidor de origen elimine el recurso identificado por el URI de solicitud.
Las primeras tres operaciones son de solo lectura, mientras que las últimas tres son operaciones de escritura.
En el protocolo HTTP, existen reglas bien definidas sobre cómo se espera que los clientes y servidores se comporten
cuando utilicen estos operadores. Los nombres y significados de los elementos de metadatos adjuntos (encabezados)
también están bien definidos. Las aplicaciones que cumplen con la REST y se ejecutan en el protocolo HTTP
comprenden y siguen estas reglas rigurosamente.
6 https://tools.ietf.org/html/rfc2396
9
Enlaces y formas de hipermedios Factores H
Al comparar los tipos de medios, puede ser
útil documentar los factores H existentes en
un cuadro visual sencillo. En el ejemplo que
Los enlaces y las formas se utilizan dentro de un tipo de medios para respaldar las limitaciones sigue a continuación, la fila inferior
identifica los factores de enlace básicos (los
de hipermedios de Fielding. Por ejemplo, existen algunas posibilidades en HTML y el explorador factores de hipermedios más notables),
web común comprende las reglas de todas ellas. Los enlaces y las formas en un mensaje mientras que las dos filas superiores
de HTML se reconocen fácilmente, pero lo que quizás no sean tan claras son las reglas identifican los factores de datos de control.
10