What is OData
• Open Data Protocol (OData) is an open protocol for sharing data.
• It is built upon AtomPub, itself an extension of Atom Publishing Protocol.
[The Atom Publishing Protocol (AtomPub) is an Application level protocol for
publishing and editing web resources.]
• OData is based on REST (Representational State Transfer) ; therefore a simple web
browser can view the data exposed through an OData service.
• The basic idea behind OData is to use a well known data format (Atom feed) to
expose a list of entities.
• AtomPub extends the basic Atom Protocol by allowing not only read but the whole
set of CRUD operations.
2
• Atom is an XML-based document format that describes Collections of
related
• information known as "feeds". Feeds are composed of a number of items,
known as Entries.
3
How OData Works: Technology Basics
4
• The OData technology has four main parts:
1. OData data model
2. OData protocol
3. OData client libraries
4. OData service
1. The OData data model, which provides a generic way to organize and
describe data.
2. The OData protocol, which lets a client make requests to and get
responses from an OData service. Those interactions include the usual
create/read/update/delete (CRUD) operations, along with an OData-
defined query language.
3. OData client libraries, which make it easier to create software that
accesses data via the OData protocol. Because OData relies on REST,
using an OData-specific client library isn't strictly required. But most
OData clients are applications, and so providing pre-built libraries for
making OData requests and getting results makes life simpler for the
developers who create those applications.
4. An OData service, which exposes an endpoint that allows access to data.
This service implements the OData protocol, and it also uses the
abstractions of the OData data model to translate data between its
underlying form, which might be relational tables, SharePoint lists, or
something else, into the format sent to the client.
5
Consumption of Odata Example
1. Requesting resources : Foe example here we use the service of an open trip
management system .
If a person named Russell White, who has formerly registered TripPin, would like
to find out who are the other people in it.
GET http://services.odata.org/v4/TripPinServiceRW/People HTTP/1.1
OData-Version: 4.0
OData-MaxVersion: 4.0
This uses version 4
TripPin from where it fetch
data
List of people whose data are retrieved
HTTP Version 1.1
6
2. Requesting an individual resource
GET http://services.odata.org/v4/TripPinServiceRW/People('russellwhyte') HTTP/1.1
OData-Version: 4.0 User name of the individual
OData-MaxVersion: 4.0 Resource
3. Queries
GET http://services.odata.org/v4/TripPinServiceRW/People?$top=2 &
$select=FirstName, LastName & $filter=Trips/any(d:d/Budget gt 3000) HTTP/1.1
OData-Version: 4.0
OData-MaxVersion: 4.0
8
In Response
HTTP/1.1 201 Created
Content-Length: 652
Content-Type:
application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=f
alse;charset=utf-8
ETag: W/'08D1D3800FC572E3'
Location:
http://services.odata.org/V4/(S(34wtn2c0hkuk5ekg0pjr513b))/TripPinServiceRW/Peop
le('lewisblack')
OData-Version: 4.0
NOTE :- IEEE754Compatible=false ;= means that Int64(Represents a 64-bit signed
integer.) and Decimal are serialized as numbers.
11
5. Relating resources
In RESTful APIs, resources are usually dependent with each other. For that, the concept
of relationships in OData can be defined among resources to add flexibility and
richness to the data model.
Example -
POST
http://services.odata.org/v4/(S(34wtn2c0hkuk5ekg0pjr513b))/TripPinServiceRW/Peop
le('lewisblack')/Trips/$ref HTTP/1.1
OData-Version: 4.0
OData-MaxVersion: 4.0
Content-Length: 123
Content-Type: application/json
{
"@odata.id":"http://services.odata.org/V4/(S(34wtn2c0hkuk5ekg0pjr513b))/TripPinSer
viceRW/People('russellwhyte')/Trips(0)"
}
12
In Response
HTTP/1.1 204 No Content
OData-Version: 4.0
6. Invoking a Function
OData supports defining functions and actions to represent complicated logic and
which can be frequently used.
For Example :- After having explored the TripPin OData service, Russell finds out that
it has a function called GetInvolvedPeople from which he can find out the involved
people of a specific trip.
13
Atom is an XML-based document format that describes Collections of related
information known as "feeds". Feeds are composed of a number of items, known as Entries.
The OData data model, which provides a generic way to organize and describe data.
The OData protocol, which lets a client make requests to and get responses from an OData service. Those interactions include the usual create/read/update/delete (CRUD) operations, along with an OData-defined query language.
OData client libraries, which make it easier to create software that accesses data via the OData protocol. Because OData relies on REST, using an OData-specific client library isn't strictly required. But most OData clients are applications, and so providing pre-built libraries for making OData requests and getting results makes life simpler for the developers who create those applications.
An OData service, which exposes an endpoint that allows access to data. This service implements the OData protocol, and it also uses the abstractions of the OData data model to translate data between its underlying form, which might be relational tables, SharePoint lists, or something else, into the format sent to the client.
IEEE754Compatible=false ;= means that Int64(Represents a 64-bit signed integer.) and Decimal are serialized as numbers.