REST - ¿Qué se entiende exactamente por interfaz uniforme?
Interfaz uniforme
La restricción de interfaz uniforme es fundamental para el diseño de cualquier servicio REST. [14] La interfaz uniforme simplifica y desacopla la arquitectura, lo que permite que cada parte evolucione de forma independiente. Los cuatro principios rectores de esta interfaz son:
Identificación de recursos.
Los recursos individuales se identifican en las solicitudes, por ejemplo, utilizando URI en sistemas REST basados en la web. Los recursos mismos están conceptualmente separados de las representaciones que se devuelven al cliente. Por ejemplo, el servidor puede enviar datos desde su base de datos como HTML, XML o JSON, ninguno de los cuales es la representación interna del servidor, y es el mismo recurso independientemente.
Manipulación de recursos a través de estas representaciones.
Cuando un cliente tiene una representación de un recurso, incluidos los metadatos adjuntos, tiene suficiente información para modificar o eliminar el recurso.
Mensajes autodescriptivos
Cada mensaje incluye suficiente información para describir cómo procesar el mensaje. Por ejemplo, qué analizador invocar puede especificarse mediante un tipo de medio de Internet (anteriormente conocido como tipo MIME). Las respuestas también indican explícitamente su capacidad de almacenamiento en caché.
Hipermedia como motor del estado de la aplicación (A.K.A. HATEOAS)
Los clientes realizan transiciones de estado solo a través de acciones que el servidor identifica dinámicamente dentro de los hipermedios (por ejemplo, mediante hipervínculos dentro del hipertexto). Excepto por los puntos de entrada fijos simples a la aplicación, un cliente no asume que ninguna acción en particular esté disponible para ningún recurso en particular más allá de los descritos en las representaciones recibidas previamente del servidor.
Estoy escuchando una conferencia sobre el tema y el profesor ha dicho:
"Cuando alguien se acerca a nuestra API, si puede obtener un objeto de cliente y sabe que hay objetos de pedido, debería poder obtener los objetos de pedido con el mismo patrón del que obtuvo los objetos de cliente. Estos URI son va a parecerse el uno al otro ".
Esto me parece incorrecto. No se trata tanto de cómo se ven los URI o de que haya coherencia, sino de la forma en que se usan los URI (identificar recursos, manipular los recursos a través de representaciones, mensajes autodescriptivos y hateoas).
No creo que eso sea lo que significa Interfaz uniforme en absoluto. ¿Qué significa exactamente?