Protocolo de Datos AbiertosEn la informática, el Protocolo de Datos Abierto (OData) o Open Data Protocoles un protocolo abierto que permite la creación y consumo de APIs RESTful que pueden ser consultadas e interoperables en una manera simple y estandarizada. Microsoft inició dicho protocolo en el 2007.[1] Las versiones 1.0,2.0 y 3 están lanzadas bajo el Microsoft Open Specification Promise. La versión 4.0 fue estandarizada en OASIS,,[2] con un lanzamiento en marzo de 2014.[3] En abril de 2015 OASIS envió la versión 4 de OData y la versión 4 del formato OData JSON a ISO/IEC JTC 1 para su aprobación como un estándar internacional.[4] El protocolo permite la creación y consumición de APIs REST que permiten la creación de clientes Web para publicar y editar recursos, identificados utilizando URLs y definido en un modelo de datos, usando mensajes HTTP simples.OData comparte algunas similitudes con JDBC y con ODBC; como ODBC, OData no esta limitada a una Base de datos relacional. EstandarizaciónTras el desarrollo inicial por Microsoft, OData se convirtió en un protocolo del comité técnico OASIS OData Comité Técnico OASIS OData
El trabajo del comité consiste en simplificar la consulta y compartimiento de los datos de las aplicaciones y múltiples stake-holders para la re-utilización en las empresas,nube y dispositivos móviles.Se usa un protocólo basado en REST para poder dirigir y acceder las fuentes. Permite que la información pueda ser accedida desde una variedad de fuentes como pueden ser bases de datos distribuidas, sistemas de ficheros, sistemas de manejo de contenido y páginas web. OData ofrece una forma de dividir contenedores de datos y así incrementar el valor compartido de los datos debido a que los usuarios pueden ínter-operar con los productores de una manera que produce mayor valor permitiendo que las aplicaciones tenga sentidos en conjuntos más amplios de datos. ArquitecturaOData es un protocolo para la creación y consumición de APIs REST. Así pues, como práctica común de REST,Construcciones OData en HTTP,AtomPub y JSON utilizando el identificador de recursos uniformes para dirigir y acceder a recursos alimentados de datos. Identificación de recursosOData utiliza identificadores de recursos uniformes. Para cada servicio OData cuyo servicio raíz esta abreviado como http://host/service/, los siguientes recursos fijos pueden ser encontrados. Documento del servicioEl documento del servicio muestra conjuntos de entidades,funciones e instancias únicas que pueden ser recuperadas.Los clientes pueden utilizar el documento del servicio para navegar el modelo de forma hypermedia-driven. El documento del servicio está disponible en http://host/service/. Documento de meta-datosEl documento de meta-datos describe los tipos, conjuntos, funciones y acciones entendidas por el servicio OData. Los clientes pueden utilizar el documento de meta-datos para entender como consultar e interaccionar con las entidades del servicio. El documento de metadatos está disponible en http://host/service/$metadata. Recursos dinámicosLos identificadores de recursos uniforme pueden ser computados desde la información hypermedia en el documento del servicio y documento de meta-datos. Operación de recursoOData utiliza los verbos HTTP para indicar las operaciones en los recurso. * GET: Coge el recurso(una colección de entidades,una sola entidad,una propiedad estructural, una propiedad de navegación,un flujo,etc.). * POST: Crear un nuevo recurso * PUT: Actualiza un recurso existente reemplazándolo con una instancia completa. * PATCH: Actualiza un recurso existente reemplazándolo una parte de sus propiedades con una instancia parcial. * DELETE: Borra el recurso. Representación del recursoOData utiliza diferentes formatos para representar los datos y el modelo de datos. En la versión 4.0 del protocolo OData, El formato JSON es el estándar para representar datos, con el formato Atom aún en la fase de especificación del comité. Para representar el modelo de datos se utiliza el lenguaje de definición de esquema común, que define una representación del modelo de datos de entidad expuesto por los servicios OData. Un ejemplo de OData JSONUna colección de productos {
"http://services.odata.org/V4/OData/OData.svc/$metadata#Products",
"value": [
{
"ID": 0,
"Name": "Meat",
"Description": "Red Meat",
"ReleaseDate": "1992-01-01T00:00:00Z",
"DiscontinuedDate": null,
"Rating": 14,
"Price": 2.5
},
{
"ID": 1,
"Name": "Milk",
"Description": "Low fat milk",
"ReleaseDate": "1995-10-01T00:00:00Z",
"DiscontinuedDate": null,
"Rating": 3,
"Price": 3.5
},
...
]
}
Ejemplo de OData AtomColección de productos <feed xml:base="http://services.odata.org/V4/OData/OData.svc/" m:context="http://services.odata.org/V4/OData/OData.svc/$metadata#Products" xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://docs.oasis-open.org/odata/ns/data" xmlns:m="http://docs.oasis-open.org/odata/ns/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml">
<id>http://services.odata.org/v4/odata/odata.svc/Products</id>
<title type="text">Products</title>
<updated>2015-05-19T03:38:50Z</updated>
<link rel="self" title="Products" href="Products"/>
<entry>
<id>http://services.odata.org/V4/OData/OData.svc/Products(0)</id>
<category term="#ODataDemo.Product" scheme="http://docs.oasis-open.org/odata/ns/scheme"/>
<link rel="edit" title="Product" href="Products(0)"/>
<link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/Categories" type="application/xml" title="Categories" href="Products(0)/Categories/$ref"/>
<link rel="http://docs.oasis-open.org/odata/ns/related/Categories" type="application/atom+xml;type=feed" title="Categories" href="Products(0)/Categories"/>
<link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/Supplier" type="application/xml" title="Supplier" href="Products(0)/Supplier/$ref"/>
<link rel="http://docs.oasis-open.org/odata/ns/related/Supplier" type="application/atom+xml;type=entry" title="Supplier" href="Products(0)/Supplier"/>
<link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/ProductDetail" type="application/xml" title="ProductDetail" href="Products(0)/ProductDetail/$ref"/>
<link rel="http://docs.oasis-open.org/odata/ns/related/ProductDetail" type="application/atom+xml;type=entry" title="ProductDetail" href="Products(0)/ProductDetail"/>
<title/>
<updated>2015-05-19T03:38:50Z</updated>
<author>
<name/>
</author>
<content type="application/xml">
<m:properties>
<d:ID m:type="Int32">0</d:ID>
<d:Name>Bread</d:Name>
<d:Description>Whole grain bread</d:Description>
<d:ReleaseDate m:type="DateTimeOffset">1992-01-01T00:00:00Z</d:ReleaseDate>
<d:DiscontinuedDate m:null="true"/>
<d:Rating m:type="Int16">4</d:Rating>
<d:Price m:type="Double">2.5</d:Price>
</m:properties>
</content>
</entry>
<entry>
<id>http://services.odata.org/V4/OData/OData.svc/Products(1)</id>
<category term="#ODataDemo.Product" scheme="http://docs.oasis-open.org/odata/ns/scheme"/>
<link rel="edit" title="Product" href="Products(1)"/>
<link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/Categories" type="application/xml" title="Categories" href="Products(1)/Categories/$ref"/>
<link rel="http://docs.oasis-open.org/odata/ns/related/Categories" type="application/atom+xml;type=feed" title="Categories" href="Products(1)/Categories"/>
<link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/Supplier" type="application/xml" title="Supplier" href="Products(1)/Supplier/$ref"/>
<link rel="http://docs.oasis-open.org/odata/ns/related/Supplier" type="application/atom+xml;type=entry" title="Supplier" href="Products(1)/Supplier"/>
<link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/ProductDetail" type="application/xml" title="ProductDetail" href="Products(1)/ProductDetail/$ref"/>
<link rel="http://docs.oasis-open.org/odata/ns/related/ProductDetail" type="application/atom+xml;type=entry" title="ProductDetail" href="Products(1)/ProductDetail"/>
<title/>
<updated>2015-05-19T03:38:50Z</updated>
<author>
<name/>
</author>
<content type="application/xml">
<m:properties>
<d:ID m:type="Int32">1</d:ID>
<d:Name>Milk</d:Name>
<d:Description>Low fat milk</d:Description>
<d:ReleaseDate m:type="DateTimeOffset">1995-10-01T00:00:00Z</d:ReleaseDate>
<d:DiscontinuedDate m:null="true"/>
<d:Rating m:type="Int16">3</d:Rating>
<d:Price m:type="Double">3.5</d:Price>
</m:properties>
</content>
</entry>
...
</feed>
Ejemplo de un documento OData de meta-datos<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
<edmx:DataServices>
<Schema Namespace="ODataDemo" xmlns="http://docs.oasis-open.org/odata/ns/edm">
<EntityType Name="Product">
<Key>
<PropertyRef Name="ID"/>
</Key>
<Property Name="ID" Type="Edm.Int32" Nullable="false"/>
<Property Name="Name" Type="Edm.String"/>
<Property Name="Description" Type="Edm.String"/>
<Property Name="ReleaseDate" Type="Edm.DateTimeOffset" Nullable="false"/>
<Property Name="DiscontinuedDate" Type="Edm.DateTimeOffset"/>
<Property Name="Rating" Type="Edm.Int16" Nullable="false"/>
<Property Name="Price" Type="Edm.Double" Nullable="false"/>
</EntityType>
<ComplexType Name="Address">
<Property Name="Street" Type="Edm.String"/>
<Property Name="City" Type="Edm.String"/>
<Property Name="State" Type="Edm.String"/>
<Property Name="ZipCode" Type="Edm.String"/>
<Property Name="Country" Type="Edm.String"/>
</ComplexType>
<EntityContainer Name="DemoService">
<EntitySet Name="Products" EntityType="ODataDemo.Product"></EntitySet>
</EntityContainer>
</Schema>
</edmx:DataServices>
</edmx:Edmx>
EcosistemaEl ecosistema de OData consiste en librerías cliente/servidor que implementan el protocolo, y aplicaciones basadas en el protocolo LibreríasHay un gran número de librerías OData disponibles para acceder/Producir APIs de OData .NET
Java
JavaScript
PHP
PythonRuby
Otros lenguajesOtros lenguajes implementados son::[7]
AplicacionesLas aplicaciones incluyen:[8]
Herramientas
Véase también
Referencias
Enlaces externos
OData OASIS Standards
Especificaciones del comitéNotas del comité |