¿Qué son ODATA y REST API y por qué los necesitamos?
La combinación de diferentes sistemas de software a veces es necesaria, a veces obligatoria en nuestro mundo de TI moderno. La pregunta es cómo estos sistemas deben comunicarse e intercambiar datos. Se han descubierto una serie de estándares y protocolos para facilitar la comunicación entre diferentes sistemas. Si alguna vez has explorado estos sistemas, es posible que hayas encontrado dos tecnologías populares: OData y las APIs REST.
¿Qué es REST?
Una API es un conjunto de definiciones y protocolos para construir e integrar software de aplicaciones. A veces se le llama un contrato entre un proveedor de información y un usuario de información, estableciendo el contenido requerido por el consumidor (la llamada) y el contenido requerido por el productor (la respuesta). Por ejemplo, el diseño de API para un servicio meteorológico podría especificar que el usuario proporcione un código postal y que el productor responda con una respuesta de 2 partes, la primera siendo la temperatura alta y la segunda la temperatura baja.
REST (REpresentational State Transfer) es un estilo arquitectónico de software que define cómo enviar mensajes entre dos sistemas diferentes utilizando el protocolo HTTP. Originalmente desarrollado por Roy Fielding hace dos décadas, REST ha crecido para convertirse en la arquitectura más popular para intercambiar información en la World Wide Web.
El estándar REST describe 6 principios o restricciones arquitectónicas diferentes para servicios web. Pero no escribiré sobre eso porque nuestro tema es diferente.
¿Qué es ODATA?
ODATA se identifica a sí mismo como "OData (Open Data Protocol) es un estándar de OASIS que define las mejores prácticas para construir y consumir APIs RESTful. OData te ayuda a centrarte en tu lógica empresarial al construir APIs RESTful sin tener que preocuparte por los enfoques para definir cabeceras de solicitud y respuesta, códigos de estado, métodos HTTP, convenciones de URL, tipos de medios, formatos de carga útil y opciones de consulta, etc. OData también te guía sobre el seguimiento de cambios, la definición de funciones/acciones para procedimientos reutilizables y el envío de solicitudes asíncronas/lote, etc. Además, OData proporciona facilidades de extensión para satisfacer cualquier necesidad personalizada de tus APIs RESTful."
OData vs REST: ¿Cuál es la diferencia?
REST es un estilo arquitectónico para intercambiar información a través del protocolo HTTP. El estándar REST define principios que deben ser seguidos por cualquier API REST.
OData se basa en el marco REST para definir las mejores prácticas para construir APIs REST, incluido el formato de mensaje HTTP, cómo consultar la API, y más. Aunque OData anima a los usuarios a seguir los principios REST en todo momento, este requisito puede relajarse si hay una razón convincente. Además, OData especifica que los datos deben transferirse en formato Atom o JSON.
Si resumimos
REST es una técnica de diseño genérica utilizada para describir cómo se puede acceder a un servicio web. Usando REST, puedes hacer solicitudes http para obtener datos. Si lo intentas en tu navegador, sería como ir a un sitio web, excepto que en lugar de devolver una página web, obtendrías XML. Algunos servicios también devolverán datos en formato JSON, que es más fácil de usar con JavaScript.
OData es una tecnología específica que expone datos a través de REST.
REST: patrón de diseño
OData: tecnología habilitadora
Puedes comprender mejor la tecnología ODATA con este tutorial:
https://www.odata.org/getting-started/understand-odata-in-6-steps/
¿Cuáles son las ventajas de ODATA?
OData proporciona los siguientes beneficios:
-
Permite a los desarrolladores interactuar con datos utilizando servicios web RESTful.
-
Proporciona una forma simple y uniforme de compartir datos de manera descubrible.
-
Permite una amplia integración entre productos.
-
Permite la integración utilizando el conjunto de protocolos HTTP.
¿Qué hay de nuevo en ODATAV4?
Mejoras en el modelo.
Los servicios de OData V4.01 pueden admitir los siguientes nuevos constructos de metadatos:
-
Edm.Untyped: para especificar que una propiedad puede ser de cualquier tipo. Admite la representación de cosas fuera del modelo de datos de OData, como propiedades de tipo variante, colecciones mixtas o colecciones de colecciones.
-
Tipos de entidad sin clave para singletons: los tipos de entidad utilizados como singletons, o propiedades de navegación singleton, ya no necesitan tener un valor de clave defin