El Modelo de Madurez de Richardson ( RMM ) es un modelo de madurez propuesto en 2008 por Leonard Richardson que clasifica las API web según su adhesión y conformidad con cada uno de los cuatro niveles del modelo. El objetivo de la investigación del modelo, según lo declarado por el autor, era determinar la relación entre las restricciones de REST y otras formas de servicios web. [ 1 ]
Divide las partes principales del diseño RESTful en tres pasos: identificación de recursos ( URI ), verbos HTTP y controles de hipermedia (por ejemplo, hipervínculos ). [ 2 ]
El RMM ha sido citado como útil para evaluar la calidad del diseño de API web particularmente RESTful (aunque no se limita solo a REST) y criticado por no abordar cómo un sistema podría alcanzar los niveles más altos de madurez del modelo, así como por considerar un número limitado de atributos de calidad. [ 3 ]
Descripción general
El RMM se puede emplear para determinar qué tan bien se ajusta una arquitectura de servicio web a los principios REST. Categoriza una API web en cuatro niveles (del 0 al 3), donde cada nivel superior corresponde a una mayor adhesión al diseño REST. El siguiente nivel también contiene todas las características del anterior. [ 4 ] [ 5 ]
También existen otros sistemas de clasificación para el diseño de servicios de API web, como CoHA y WS 3 . [ 3 ]
Niveles
Nivel 0: El pantano de la viruela
El nivel más bajo del modelo describe una API web con una única URI (normalmente POST sobre HTTP) que acepta todas las operaciones compatibles con el servicio. Los recursos en este formato no pueden estar bien definidos. La mensajería se realiza en XML , JSON u otros formatos de texto. Estos son ejemplos típicos de RPC, POX y muchos servicios SOAP .
Los sistemas de nivel cero no se clasifican como RESTful .
Nivel 1: Recursos
Introduce recursos y permite realizar solicitudes a URI individuales (todas generalmente mediante POST) para acciones específicas, en lugar de exponer un único punto final (API) universal. Los recursos de la API siguen siendo generalizados, pero es posible identificar el alcance de cada uno.
El diseño de nivel uno no es RESTful, pero está organizando la API en la dirección de convertirse en una.
Nivel 2: Verbos HTTP
El sistema comienza a utilizar verbos HTTP . Esto permite una mayor especialización del recurso y, por lo tanto, reduce la funcionalidad de cada operación individual dentro del servicio. La separación principal en este nivel consiste en dividir un recurso dado en dos : una solicitud para obtener datos únicamente (GET) y otra para modificarlos (POST). También es posible una mayor granularización. Las solicitudes GET solo obtienen datos, las llamadas POST/PUT introducen datos nuevos y actualizan los existentes, y las solicitudes DELETE eliminan o invalidan acciones anteriores. Una desventaja de proporcionar un servicio distribuido con más de verbos GET y POST por recurso podría ser la creciente complejidad de usar dicho sistema.
Nivel 3: Controles de hipermedia
El último nivel introduce la representación hipermedia. También conocida como HATEOAS (Hypermedia As The Engine of Application State), se trata de elementos integrados en los mensajes de respuesta de los recursos que permiten establecer una relación entre las entidades de datos individuales que se devuelven y se envían a las API. Por ejemplo, una solicitud GET a un sistema de reservas de hotel podría devolver el número de habitaciones disponibles junto con enlaces hipermedia (en las primeras versiones del modelo, estos serían controles de hipervínculos HTML) que permitirían al cliente reservar habitaciones específicas.
Este es el último nivel del Modelo de Madurez de Richardson.
Pedido:
GET /room/?customerId=1&date=10-11-2020&hotelCode=ASTORIA HTTP / 1.1Respuesta:
{ "customerId" : "1" , "reservations" : [{ "room" : "102" , "checkin" : "10-11-2020" , "checkout" : "11-14-2020" , "price" : "100" , "href" : "https://localhost:8080/room/102" }] }Referencias
- ↑ Richardson, Leonard (20 de noviembre de 2008). "La justicia nos llevará millones de movimientos complejos" . www.crummy.com . Acto tres: La heurística de la madurez . Recuperado el 19 de mayo de 2021 .
{{cite web}}: Enlace externo en( ayuda ) CS1 mantenimiento: ubicación ( enlace )|location= - ↑ "Richardson Maturity Model" . martinfowler.com . Consultado el 10 de diciembre de 2020 .
- ^ Ivan Salvadori, Frank Siqueira (junio de 2015) . "Un modelo de madurez para las API web RESTful semánticas" . Researchgate.net . Consultado el 10 de diciembre de 2020 .
- ↑ Hiranya Jayathilaka, Chandra Krintz y Rich Wolski (2016). "Computación orientada a servicios con API: desafíos y tendencias emergentes" (PDF) . Universidad de California en Santa Bárbara, EE. UU . Recuperado el 11 de diciembre de 2020 .
{{cite news}}: CS1 maint: varios nombres: lista de autores ( enlace ) - ↑ Arne Koschel, Irina Astrova, Maximilian Blankschyn, Dominik Schöner y Kevin Schulze (2019). "Evaluación de la funcionalidad REST de las API desde cero"" (PDF) . Actas de la 15.ª Conferencia Internacional sobre Sistemas y Tecnologías de Información Web (WEBIST 2019) . Consultado el 11 de diciembre de 2020 .
{{cite news}}: CS1 maint: varios nombres: lista de autores ( enlace )
- Modelos de madurez