Friday, November 22, 2024

Introducción a REST

Sesión 3: 2h1m



REST necesita restricciones

Interfaz uniforme: Todos los recursos del servidor tienen un nombre en forma de URL o hipervínculo.

  • Identificación de recursos
    • Un recurso está separado conceptualmente de la representación.
    • Media Types de representación: application/json, application/xml, custom...
  • Manipulación de los recursos a tavés de las representaciones
    • La representación + metadatos deben ser suficientes para modificar o eliminar el recurso.
  • Mensaje autodescriptivo
    • Cada mensaje debe incluir información suficiente para describir cómo procesar el mensaje.
  • Hypermedia as the Engine of Application State (HATEOAS)
    • Hypermedia es una generalización de Hypertext (links)
      • Indica como consumir y utilizar la API
      • Permite la autodocumentación de la API
    • REST ya te indica que autodocumentes la forma en que debes consumir los servicios. No indica utilizar OpenAPI para documentar servicios. Usamos OpenAPI porque no llegamos a implementar HATEOAS. Una forma de suplir la documentación de REST es usar OpenAPI y Swagger.

Cliente-Servidor: La aplicación se tiene que separar en dos componentes; el cliente y el servidor. Cliente y servidor pueden evolucionar por separado.


Statetlessness: El estado está contenido dentro de la solicitud. 

Sistema en capas: El cliente no puede determinar a que capa está conectada.

Cacheable: Cada mensaje de respuesta debe indicar explícitamente si se puede almacenar en caché o no. 

Código bajo demanda (opcional): El servidor puede extender la funcionalidad del cliente. La aplicación cliente puede recibir código del servidor. Ejemplo: El sevidor generar código JavaScript y se lo envía al cliente para su ejecución.


IMPORTANTE: Un sistema solo se considera RESTful cuando se adhiere a todas las restricciones requeridas. La mayoría de las API "RESTful" no son realmente RESTful, pero por eso no los hace malos APIs, siempre y cuando se entienda las posibles compensaciones.


¿Cuál es la diferencia entre una API y un servicio en el ámbito web?
  • El API es solamente una interfaz
  • La API consume un Sevicio (quien hace realmente el trabajo).













No comments:

Post a Comment

Cuando el código funciona, pero no tiene tests: ¿y ahora qué?

Seguramente te ha pasado alguna vez. Te dan acceso al repositorio de un nuevo proyecto. Lo abres con curiosidad, esperas encontrar una estru...