stringtranslate.com

DESCANSAR

REST ( transferencia de estado representacional ) es un estilo arquitectónico de software que se creó para guiar el diseño y desarrollo de la arquitectura para la World Wide Web . REST define un conjunto de restricciones sobre cómo debe comportarse la arquitectura de un sistema hipermedia distribuido a escala de Internet , como la Web. El estilo arquitectónico REST enfatiza interfaces uniformes, implementación independiente de componentes, la escalabilidad de las interacciones entre ellos y la creación de una arquitectura en capas para promover el almacenamiento en caché para reducir la latencia percibida por el usuario , reforzar la seguridad y encapsular sistemas heredados . [1]

REST se ha empleado en toda la industria del software para crear aplicaciones basadas en web confiables y sin estado . Una aplicación que cumple con las restricciones arquitectónicas REST puede describirse informalmente como RESTful . Sin embargo, este término se asocia más comúnmente con el diseño de API basadas en HTTP y lo que se consideran mejores prácticas con respecto a los "verbos" ( métodos HTTP ) a los que responde un recurso , aunque tiene poco que ver con REST tal como se formuló originalmente, y a menudo se incluso en desacuerdo con el concepto. [2]

Principio

El término transferencia de estado representacional fue introducido y definido en 2000 por el informático Roy Fielding en su tesis doctoral. Significa que un servidor responderá con la representación de un recurso (hoy en día, con mayor frecuencia será un documento HTML , XML o JSON ), y ese recurso contendrá enlaces hipermedia que se pueden seguir para hacer que el estado del sistema cambie. Cualquier solicitud de este tipo recibirá a su vez la representación de un recurso, y así sucesivamente.

Una consecuencia importante es que el único identificador que es necesario conocer es el identificador del primer recurso solicitado, y todos los demás identificadores serán descubiertos. Esto significa que esos identificadores pueden cambiar sin necesidad de informar al cliente de antemano y que sólo puede haber un acoplamiento flojo entre el cliente y el servidor.

Historia

Roy Fielding hablando en OSCON 2008

La Web comenzó a ser de uso cotidiano en 1993-1994, cuando comenzaron a estar disponibles sitios web para uso general . [3] En ese momento, sólo había una descripción fragmentada de la arquitectura de la Web y había presión en la industria para acordar algún estándar para los protocolos de interfaz Web. Por ejemplo, se habían agregado varias extensiones experimentales al protocolo de comunicación (HTTP) para admitir servidores proxy y se estaban proponiendo más extensiones. Aún así, existía la necesidad de una arquitectura web formal con la que evaluar el impacto de estos cambios. [4]

Los grupos de trabajo del W3C y del IETF comenzaron a trabajar juntos en la creación de descripciones formales de los tres estándares principales de la Web: URI , HTTP y HTML . Roy Fielding estuvo involucrado en la creación de estos estándares (específicamente HTTP 1.0 y 1.1, y URI), y durante los siguientes seis años creó el estilo arquitectónico REST, probando sus restricciones en los estándares de protocolo de la Web y usándolo como un medio para definir. mejoras arquitectónicas e identificar discrepancias arquitectónicas. Fielding definió REST en su tesis doctoral de 2000 "Estilos arquitectónicos y diseño de arquitecturas de software basadas en redes" [1] [5] en UC Irvine .

Para crear el estilo arquitectónico REST, Fielding identificó los requisitos que se aplican al crear una aplicación basada en red mundial, como la necesidad de una barrera de entrada baja para permitir la adopción global. También examinó muchos estilos arquitectónicos existentes para aplicaciones basadas en red, identificando qué características se comparten con otros estilos, como el almacenamiento en caché y las características cliente-servidor, y aquellas que son exclusivas de REST, como el concepto de recursos. Fielding intentaba categorizar la arquitectura existente de la implementación actual e identificar qué aspectos deberían considerarse centrales para los requisitos de comportamiento y rendimiento de la Web.

Por su naturaleza, los estilos arquitectónicos son independientes de cualquier implementación específica. Si bien REST se creó como parte del desarrollo de los estándares web, la implementación de la Web no obedece a todas las restricciones del estilo arquitectónico REST. Los desajustes pueden ocurrir debido a desconocimiento o descuido, pero la existencia del estilo arquitectónico REST significa que pueden identificarse antes de que se estandaricen. Por ejemplo, Fielding identificó la incorporación de información de sesión en URI como una violación de las restricciones de REST que puede afectar negativamente el almacenamiento en caché compartido y la escalabilidad del servidor. Las cookies HTTP también violaron las restricciones REST porque pueden desincronizarse con el estado de la aplicación del navegador, lo que las hace poco confiables; también contienen datos opacos que pueden ser un problema para la privacidad y la seguridad .

Propiedades arquitectónicas

El estilo arquitectónico REST está diseñado para aplicaciones basadas en red, específicamente aplicaciones cliente-servidor. Pero más que eso, está diseñado para uso a escala de Internet, por lo que el acoplamiento entre el agente de usuario (cliente) y el servidor de origen debe ser lo más flexible posible para facilitar la adopción a gran escala.

El fuerte desacoplamiento entre cliente y servidor junto con la transferencia de información basada en texto utilizando un protocolo de direccionamiento uniforme proporcionó la base para cumplir con los requisitos de la Web: robustez (escalabilidad anárquica), implementación independiente de componentes, transferencia de datos de gran tamaño y una barrera de entrada baja para lectores de contenido, autores de contenido y desarrolladores por igual.

Un modelo entidad-relación de los conceptos expresados ​​en el estilo arquitectónico REST.

Las restricciones del estilo arquitectónico REST afectan las siguientes propiedades arquitectónicas: [1] [6]

Limitaciones arquitectónicas

El estilo arquitectónico REST define seis limitaciones rectoras. [6] [8] Cuando estas restricciones se aplican a la arquitectura del sistema, obtiene propiedades no funcionales deseables , como rendimiento, escalabilidad, simplicidad, modificabilidad, visibilidad, portabilidad y confiabilidad. [1]

Las restricciones formales de REST son las siguientes: [9]

Interfaz uniforme

La restricción de interfaz uniforme es fundamental para el diseño de cualquier sistema RESTful. [1] Simplifica y desacopla la arquitectura, lo que permite que cada parte evolucione de forma independiente. Las cuatro restricciones para esta interfaz uniforme son:

Modelos de clasificación

Se han desarrollado varios modelos para ayudar a clasificar las API REST según su cumplimiento de varios principios de diseño REST, como

Aplicado a servicios web

Las API de servicios web que cumplen con las restricciones arquitectónicas REST se denominan API RESTful. [13] Las API RESTful basadas en HTTP se definen con los siguientes aspectos: [14]

A diferencia de los servicios web basados ​​en SOAP , no existe un estándar "oficial" para las API web RESTful. Esto se debe a que REST es un estilo arquitectónico, mientras que SOAP es un protocolo. REST no es un estándar en sí mismo, pero las implementaciones RESTful utilizan estándares, como HTTP , URI , JSON y XML . Muchos desarrolladores describen sus API como RESTful, aunque estas API no cumplen con todas las restricciones arquitectónicas descritas anteriormente (especialmente la restricción de interfaz uniforme). [2] La mayoría de las API que afirman ser RESTful solo satisfacen el nivel 2 del modelo de madurez de Richardson .

Ver también

Referencias

  1. ^ abcdef Fielding, Roy Thomas (2000). "Capítulo 5: Transferencia de estado representacional (REST)". Estilos arquitectónicos y diseño de arquitecturas de software basadas en red (Ph.D.). Universidad de California, Irvine. Archivado desde el original el 13 de mayo de 2021 . Consultado el 17 de agosto de 2004 .
  2. ^ ab Fielding, Roy T. (20 de octubre de 2008). "Las API REST deben estar basadas en hipertexto". roy.gbiv.com. Archivado desde el original el 18 de marzo de 2010 . Consultado el 6 de julio de 2016 .
  3. ^ Podría, Nick (2012). Medios, sociedad, mundo: teoría social y práctica de los medios digitales. Londres: Polity Press. pag. 2.ISBN 9780745639208. Archivado desde el original el 27 de febrero de 2024 . Consultado el 9 de junio de 2021 .
  4. ^ Fielding, Roy Thomas (2000). "Capítulo 6: Experiencia y Evaluación". Estilos arquitectónicos y diseño de arquitecturas de software basadas en red (Ph.D.). Universidad de California, Irvine. Archivado desde el original el 26 de marzo de 2023 . Consultado el 21 de junio de 2023 .
  5. ^ "Fielding discute la definición del término REST". grupos.yahoo.com. Archivado desde el original el 5 de noviembre de 2015 . Consultado el 8 de agosto de 2017 .
  6. ^ ab Erl, Thomas; Carlyle, Benjamín; Pautasso, César; Balasubramanian, Raj (2012). "5.1". SOA con REST: principios, patrones y restricciones para crear soluciones empresariales con REST . Upper Saddle River, Nueva Jersey: Prentice Hall. ISBN 978-0-13-701251-0.
  7. ^ ab Fielding, Roy Thomas (2000). "Capítulo 2: Arquitecturas de aplicaciones basadas en red". Estilos arquitectónicos y diseño de arquitecturas de software basadas en red (Ph.D.). Universidad de California, Irvine. Archivado desde el original el 16 de diciembre de 2014 . Consultado el 12 de abril de 2014 .
  8. ^ Richardson, Leonard; Rubí, Sam (2007). Servicios web RESTful . Sebastopol, California: O'Reilly Media. ISBN 978-0-596-52926-0.
  9. ^ "¿Qué es la API REST?". www.visual-paradigm.com . Archivado desde el original el 24 de febrero de 2024 . Consultado el 24 de febrero de 2024 .
  10. ^ Gupta, Lokesh (2 de junio de 2018). "DESCANSO ODIOAS". Tutorial de API REST . RESTfulAPI.net. Archivado desde el original el 7 de abril de 2019 . Consultado el 10 de marzo de 2019 .
  11. ^ "Clasificación de las API HTTP". algermissen.io . Archivado desde el original el 29 de enero de 2023 . Consultado el 29 de enero de 2023 .
  12. ^ Ivan Salvadori, Frank Siqueira (junio de 2015). "Un modelo de madurez para las API web RESTful semánticas". Conferencia: Servicios Web (ICWS), Conferencia Internacional IEEE 2015 OnAt . Nueva York. Archivado desde el original el 27 de febrero de 2024 . Consultado el 14 de diciembre de 2020 a través de Researchgate.
  13. ^ Gupta, Lokesh. "¿Qué es la API REST?". Tutorial de API RESTful . Archivado desde el original el 2 de octubre de 2016 . Consultado el 29 de septiembre de 2016 .
  14. ^ Richardson, Leonard; Amundsen, Mike (2013), API web RESTful , O'Reilly Media, ISBN 978-1-449-35806-8


Otras lecturas