We're in a data-driven economy. Web API designers need to define what and how to expose data from a variety of apps, services, and stores. What are challenges of unlocking data and opening up access in a straightforward and standards-compliant manner? Is OData the right tool for the job?
Join Anant, Brian, and Greg for a discussion of OData, its API design implications, and the pros and cons of OData as an enabler of data integration and interoperability across Data APIs.
We Will Discuss »
- OData, SQL, and the "RESTification" of data - providing a uniform way to expose, structure, query and manipulate data using REST principles.
- Opportunity and challenges for OData.
- The questions of Web standards and proprietary versus open tools and protocols.
7. Interactions are shifting to edge of enterprise
Social Business
Networks Networks
Your apps Your
Your Data Your Web Site
Company
Your Store
APIs
What the means is that
you’ve think about “data” –
what you expose, and what Apps
you collect “differently”
- API-centric
8. Exposing data attracts
business to the core even
if data is not your core
business
See Amundsen’s Dogs, Information Halos and APIs:
The epic story of your API Strategy »
http://blog.apigee.com/detail/api_strategy_talk_web_2.0/
9. Exposing Data is more than the “R” of CRUD in REST
GOOD CLEAN API’S
M(E/A)SS OF
INTERCONNECTED DATA
How do you go from the m(e/a)ss to clean APIs?
10. Two schools of thought
REST APIS REST APIS
1 N
Table1 Table2
“Linked Data” view – individual
“Schema-ed” Relational or
objects, with properties and
Relational-like view of “data”
interconnections
11. REST APIS
1 N
Today we’ll discuss the “Schema-ed” view of the
world, and in particular, the OData approach
13. OData by Example
SQL Query OData Request
select * from products where id = 1 /Products(1)
select * from products /Products?$filter=name eq ‘Milk’
where name = ‘Milk’
select name from products /Products?$select=name
select * from products order by name /Products?$orderby=name
select * from products offset 10 limit 10 /Products?$top=10&$skip=10
select * from prices r, products p /Products(1)?$expand=Prices
where r.id = p.id
(* sort of)
14. Filters
/Categories?$filter=Name eq ‘Dairy’
Logical Operators
eq ne gt ge lt le eq or and
Arithmetic Operators
add sub mul div mod
Parenthesis Operator
()
Canonical Functions
substrof endswith startswith
length indexof replace substring tolower
toupper trim concat year years month day
days hour hours minute minutes second
seconds round floor ceiling isof cast
15. Format
/Categories?$format=json *
atom json xml
(plus any other IANA-defined media types)
*If the $format query option is present in a request URI it takes
precedence over the value(s) specified in the Accept request header.