Capítulo 1: Introducción a OData
Este capítulo busca comprender los conceptos básicos de Open Data Protocol (OData). Exploraremos qué es OData, por qué se creó, su evolución a lo largo del tiempo y cómo se compara y complementa con el estilo arquitectónico REST. También veremos que, aunque nuestro enfoque principal es SAP, OData es un estándar abierto con aplicabilidad más allá del ecosistema SAP.
¿Qué es OData?
OData, siglas de Open Data Protocol, es un estándar abierto aprobado por organismos internacionales como OASIS e ISO/IEC, que define un conjunto de mejores prácticas para construir y consumir APIs RESTful.
🔍 ¿Qué es una API?
Una API (Application Programming Interface) es una interfaz que permite que dos sistemas o aplicaciones se comuniquen entre sí. Piensa en ella como un “menú” que le dice al cliente (como una aplicación web o móvil) qué datos puede pedir y cómo hacerlo.
🔍 ¿Qué significa RESTful?
RESTful hace referencia a REST (Representational State Transfer), un estilo de arquitectura web que se basa en el uso de HTTP (el mismo protocolo que usamos para navegar por internet) para acceder y manipular recursos. Las APIs RESTful usan métodos como GET, POST, PUT y DELETE para interactuar con los datos, de manera similar a cómo usamos comandos para realizar acciones en un sistema.
En esencia, OData proporciona una forma estandarizada y uniforme para que los clientes web (como navegadores, aplicaciones móviles o sistemas front-end) publiquen, editen y consulten recursos de datos usando simples mensajes HTTP.
Estos recursos se identifican mediante URIs (Uniform Resource Identifiers), que son direcciones únicas en la web que apuntan a una entidad específica (por ejemplo, /Products(123) para el producto con ID 123), y están definidos dentro de un modelo de datos abstracto que describe la estructura de la información expuesta (como entidades, relaciones y propiedades).
El protocolo permite crear servicios de datos basados en HTTP que facilitan el acceso a información desde múltiples fuentes, tales como:
Bases de datos relacionales (como SAP HANA o SQL Server)
Sistemas de archivos
Sistemas de gestión de contenido (CMS, como WordPress o SharePoint)
Aplicaciones empresariales (como SAP ERP)
Aunque comúnmente se asocia a bases de datos relacionales, OData no se limita a ellas. De hecho, su capacidad de interactuar con distintos orígenes de datos lo hace comparable en espíritu a tecnologías como JDBC (Java Database Connectivity) u ODBC (Open Database Connectivity), que también permiten conectar aplicaciones con bases de datos, pero en entornos de escritorio o servidores más tradicionales.
El principal objetivo de OData es romper los silos de información —es decir, evitar que los datos queden atrapados en sistemas aislados— y aumentar el valor compartido de la información. Esto se logra creando un ecosistema donde los productores de datos (sistemas que los generan o almacenan) y los consumidores de datos (aplicaciones, usuarios o servicios que los utilizan) puedan interoperar fácilmente, de forma segura y estandarizada.
En resumen:
OData es una tecnología que permite que distintas aplicaciones compartan datos de forma segura y organizada, usando internet como medio.
Funciona como un lenguaje común para que los sistemas se entiendan entre sí, incluso si fueron creados por diferentes empresas.
Así, facilita que aplicaciones móviles, sitios web o sistemas empresariales accedan y usen información sin necesidad de programaciones complejas.
Propósito y Beneficios
El propósito fundamental de OData es simplificar la creación y el consumo de APIs de datos basadas en la web. Al estandarizar convenciones sobre cómo construir estas APIs, OData permite a los desarrolladores centrarse en la lógica de negocio en lugar de preocuparse por definir aspectos como cabeceras de solicitud y respuesta, códigos de estado HTTP, métodos HTTP, convenciones de URL, tipos de medios, formatos de payload y opciones de consulta.
Los principales beneficios de usar OData incluyen:
Estandarización e Interoperabilidad: Proporciona un enfoque uniforme para exponer y acceder a datos, promoviendo la interoperabilidad entre diferentes aplicaciones, servicios y plataformas. Esto simplifica los esfuerzos de integración.
Simplificación del Desarrollo: Define las mejores prácticas para APIs RESTful, reduciendo la complejidad y permitiendo a los desarrolladores enfocarse en la lógica de negocio.
Capacidades de Consulta Avanzadas: Ofrece un lenguaje de consulta rico y estandarizado (opciones de consulta del sistema como $filter, $select, $orderby, $top, $skip, $expand) que permite a los clientes solicitar precisamente los datos que necesitan, incluyendo filtrado, ordenación, paginación y expansión de datos relacionados.
Descubrimiento de Metadatos: Proporciona un mecanismo estándar ($metadata) para describir el modelo de datos del servicio (tipos, conjuntos, relaciones, operaciones). Esto permite a los clientes y herramientas genéricas comprender la estructura y capacidades de la API sin conocimiento previo.
Eficiencia del Protocolo: Al permitir a los clientes solicitar solo las propiedades necesarias ($select) o incluir datos relacionados en una sola solicitud ($expand), OData ayuda a reducir el tráfico de red y mejorar el rendimiento general.
Flexibilidad de Formato: Soporta múltiples formatos de datos, siendo JSON el estándar en V4 y Atom (basado en XML) también disponible, especialmente en V2.
Independencia de Plataforma: Al basarse en estándares web como HTTP, JSON y AtomPub, OData es independiente de la plataforma y compatible con diversos lenguajes de programación y frameworks.
Historia y Versiones (V2, V4)
OData fue iniciado por Microsoft en 2007. Las versiones iniciales (1.0, 2.0 y 3.0) se publicaron bajo la Microsoft Open Specification Promise (OSP). Posteriormente, OData fue estandarizado a través de OASIS (Organization for the Advancement of Structured Information Standards), una organización sin ánimo de lucro.
OData V2: Fue una versión ampliamente adoptada, especialmente dentro del ecosistema SAP a través de SAP Gateway. Se basa en AtomPub, HTTP y JSON. Define convenciones de URI y opciones de consulta como $filter, $select, $orderby, $top, $skip, $expand, $format, $inlinecount. Utiliza XML para la definición de metadatos. Para actualizaciones parciales, a menudo empleaba el método HTTP MERGE o POST con la cabecera X-HTTP-METHOD: MERGE.
OData V4: Es la versión actual recomendada y estandarizada por OASIS e ISO/IEC (ISO/IEC 20802). Introduce mejoras significativas sobre V2, incluyendo:
Modelo de Datos Mejorado: Soporte para tipos de datos adicionales (Date, TimeOfDay, Duration, Enum), herencia y contención.
Capacidades de Consulta Extendidas: $filter, $orderby, $select aplicables en entidades expandidas ($expand), nueva opción $search para búsqueda de texto completo, opción $apply para agregaciones, opción $compute para propiedades calculadas.1 La opción $count reemplaza a $inlinecount.
Operaciones Estándar: Uso del método HTTP PATCH para actualizaciones parciales, alineándose mejor con los estándares HTTP.
Formato JSON Optimizado: Payloads JSON más ligeros y flexibles, con control sobre la cantidad de metadatos incluidos (niveles full, minimal, none). JSON también es una opción para el documento de metadatos.
Consultas Delta: Soporte para $deltatoken, permitiendo a los clientes recuperar solo los cambios desde la última consulta, crucial para escenarios offline y de sincronización eficiente.
Otras Mejoras: Soporte para acciones y funciones más robusto, mejor manejo de errores, simplificación de patrones URL.
SAP está enfocándose progresivamente en OData V4 como el estándar preferido para nuevos desarrollos, haciéndolo una opción más preparada para el futuro. Sin embargo, OData V2 sigue siendo relevante debido a su amplia presencia en sistemas existentes.
OData vs. REST
Es fundamental entender la relación entre OData y REST (Representational State Transfer). REST no es un protocolo, sino un estilo arquitectónico para diseñar aplicaciones en red, basado en principios como la comunicación sin estado, la interfaz uniforme (uso de métodos HTTP estándar como GET, POST, PUT, DELETE), la identificación de recursos mediante URIs y la manipulación de recursos a través de representaciones (como JSON o XML).
OData se basa en los principios de REST y los extiende. Mientras que REST proporciona las directrices arquitectónicas generales, OData define convenciones y mejores prácticas específicas sobre cómo implementar esas directrices para APIs de datos.
Se puede pensar en REST como el marco arquitectónico y OData como una especificación concreta construida sobre ese marco. OData estandariza aspectos que REST deja abiertos a la interpretación, como:
Convenciones de URL: Cómo estructurar las URIs para acceder a colecciones, entidades individuales, propiedades y relaciones.
Formatos de Payload: Define cómo estructurar los datos en JSON y Atom/XML.
Metadatos: Especifica un formato ($metadata) para describir el modelo de datos.
Opciones de Consulta: Estandariza parámetros como $filter, $select, etc.
Operaciones: Mapeo claro de operaciones CRUD a métodos HTTP.
Características Adicionales: Define estándares para lotes ($batch), control de concurrencia (ETags), acciones/funciones, etc.
En resumen, todo servicio OData es una API RESTful, pero no toda API RESTful sigue las convenciones de OData. OData añade una capa de estandarización sobre REST para facilitar la interoperabilidad y el consumo de APIs de datos.
Aplicabilidad Fuera de SAP
Aunque este libro se centra en SAP, OData es un estándar abierto y no está limitado al ecosistema SAP. Su objetivo de interoperabilidad lo hace útil en muchos contextos donde se necesita exponer y consumir datos de forma estandarizada.
Algunos ejemplos de uso de OData fuera de SAP incluyen:
Microsoft: Como iniciador del protocolo, Microsoft utiliza OData en muchos de sus productos y servicios, como Microsoft Graph API, Azure Data Services, SQL Server Reporting Services, SharePoint y Microsoft Power Platform (Power Automate, Power Apps) para conectar a diversas fuentes, incluyendo SAP.28
Salesforce: Salesforce Lightning Connect utiliza OData (específicamente V2 en los ejemplos encontrados) para acceder a datos externos en tiempo real desde fuentes como sistemas ERP on-premise (Oracle EBS, JDEdwards, Sage), bases de datos (SQL Server, Oracle, DB2) o incluso otras instancias de Salesforce, tratándolos como objetos externos dentro de Salesforce. Herramientas como Progress DataDirect permiten exponer estas fuentes como OData.27
Otros: Diversas plataformas y herramientas utilizan OData, como IBM App Connect, UiPath Orchestrator, Progress DataDirect, servicios de análisis como Tableau o Power BI, y existe un ecosistema de bibliotecas para diferentes lenguajes como.NET (Restier) y Java (Apache Olingo). Netflix también expuso sus datos de películas a través de OData en el pasado.
Esta adopción fuera de SAP subraya la naturaleza abierta y la utilidad general de OData como estándar para la interacción de datos basada en API.
Last updated