OData (Open Data Protocol) is an ISO/IEC approved, OASIS standard that defines a set of best practices for building and consuming RESTful APIs. OData helps you focus on your business logic while building RESTful APIs without having to worry about the various approaches to define request and response headers, status codes, HTTP methods, URL conventions, media types, payload formats, query options, etc. OData also provides guidance for tracking changes, defining functions/actions for reusable procedures, and sending asynchronous/batch requests.
OData RESTful APIs are easy to consume. The OData metadata, machine-readable description of the data model of the APIs, enables the creation of powerful generic client proxies and tools.
There are several of libraries to facilitate building and consuming OData service.
Architecture
Resource Identification
OData uses URIs to identify resources. For every OData service whose service root is abbreviated as the following fixed resources can be found:
The service document
The service document lists entity sets, functions, and singletons that can be retrieved. Clients can use the service document to navigate the model in a hypermedia-driven fashion.
The metadata document
The metadata document describes the types, sets, functions and actions understood by the OData service. Clients can use the metadata document to understand how to query and interact with entities in the service.
Dynamic resources
The URIs for the dynamic resources may be computed from the hypermedia information in the service document and metadata document.
Resource operation
OData leverages the HTTP verbs to indicate the operations on the resources.
- GET: Get the resource (a collection of entities, a single entity, a structural property, a navigation property, a stream, etc.).
- POST: Create a new resource.
- PUT: Update an existing resource by replacing it with a complete instance.
- PATCH: Update an existing resource by replacing part of its properties with a partial instance.
- DELETE: Remove the resource.
Resource Representation
OData uses different formats for representing data and the data model. In OData protocol version 4.0, JSON format is the standard for representing data, with the Atom format still being in committee specification stage. For representing the data model, the Common Schema Definition Language (CSDL) which defines an XML representation of the entity data model exposed by OData services is used.