Google Data Protocol Guy Mark Lifshitz. Motivation Google’s Mission: – Organize the world’s information – Make information universally accessible – Provide.

Slides:



Advertisements
Similar presentations
REST - Representational State Transfer
Advertisements

REST Vs. SOAP.
REST Introduction 吴海生 博克软件(杭州)有限公司.
Introduction to Web Services
Web Service Testing RESTful Web Services Snejina Lazarova Dimo Mitev
What are Web Services? How to use them?
Building RESTful Interfaces
ADVANTAGE WEBAPI PETER FUNK SOFTWARE ENGINEER, ADVANTAGE R&D MAY 20, 2011.
JSON Valery Ivanov.
With jQuery and AJAX Doncho Minkov Telerik Corporation Technical Trainer.
Peoplesoft: Building and Consuming Web Services
Computer Science 101 Web Access to Databases Overview of Web Access to Databases.
Jon Flanders INT303. About Me  Jon Flanders –  Independent consultant/trainer  BizTalk MVP.
RESTful Publish Subscribe Xiang Su
More APIs: Web Services CMPT 281. Announcements Project milestone Lab: – Web services examples.
With jQuery and AJAX Doncho Minkov Telerik Corporation Technical Trainer.
Blogs & feeds Jim des Rivieres Oct. 16, Grappling with question of how to present Jazz/OSLC data resources “Pure” data resources are presentation-
1 WebSocket & JSON Java APIs Hackday By Somay David
REST.  REST is an acronym standing for Representational State Transfer  A software architecture style for building scalable web services  Typically,
Google Data APIs Google Data APIs : Integrando suas aplicações Java com os serviços Google.
The New Zealand Institute for Plant & Food Research Limited Matthew Laurenson Web Services: Introduction & Design Considerations.
RESTful applications Norman White. REST Representational state transfer Key concepts – Client Server architecture built on transferring resources between.
Lecture 13 – XML and JSON SFDV3011 – Advanced Web Development Reference: 1.
Python and REST Kevin Hibma. What is REST? Why REST? REST stands for Representational State Transfer. (It is sometimes spelled "ReST".) It relies on a.
HTML5. HTML5’s overall theme The browser as a rich application platform rich, cross-device user interfaces offline operation capability hardware access.
Open Data Protocol * Han Wang 11/30/2012 *
Jason Cortes, GOER Web Programming/Developer
JSON-LD. JSON as an XML Alternative JSON is a light-weight alternative to XML for data- interchange JSON = JavaScript Object Notation – It’s really language.
Web Syndication Leon Wu Columbia University April 10, 2007.
DM_PPT_NP_v01 SESIP_0715_JR HDF Server HDF for the Web John Readey The HDF Group Champaign Illinois USA.
1 RSS/Atom Author : Dan McCreary Dan McCreary & Associates Date : November/17/2006 The Web Standard for Subscription and Notification.
API Crash Course CWU Startup Club. OUTLINE What is an API? Why are API’s useful? What is HTTP? JSON? XML? What is a RESTful API? How do we consume an.
2007cs Servers on the Web. The World-Wide Web 2007 cs CSS JS HTML Server Browser JS CSS HTML Transfer of resources using HTTP.
1 Alternative view on Internet Computing Web 1.0 –Web 1.0 is first generation, Web Information based. Driven by Information provider. Web 2.0 Ajax enabled.
Advanced Web Technologies Lecture #4 By: Faraz Ahmed.
Introduction to Web Services
Representational State Transfer (REST). What is REST? Network Architectural style Overview: –Resources are defined and addressed –Transmits domain-specific.
RESTful Web Services What is RESTful?
REST By: Vishwanath Vineet.
AJAX and REST. Slide 2 What is AJAX? It’s an acronym for Asynchronous JavaScript and XML Although requests need not be asynchronous It’s not really a.
Janakiram MSV Developer Evangelist Microsoft Corporation.
Feeling RESTful? Well, first we’ll define a Web Service –A web page meant to be consumed by a computer via an autonomous program as opposed to a web browser.
REST API Design. Application API API = Application Programming Interface APIs expose functionality of an application or service that exists independently.
Embt.co/sprint-rest-json-services Blog Notes: Building RESTful servers. In C++ Builder Developer Skill Sprint Tips, Tricks and Techniques The Ultimate.
Intro to REST Joe Gregorio Google. REST is an Architectural Style.
National College of Science & Information Technology.
Data Models for Web Applications
Web Development. Agenda Web History Network Architecture Types of Server The languages of the web Protocols API 2.
Lesson 11: Web Services and API's
The Fat-Free Alternative to XML
The Client-Server Model
API (Application Program Interface)
RESTful Sevices Distributed Objects Presented by: Shivank Malik
The Fat-Free Alternative to XML
REST: Web Services Abel Sanchez.
JSON.
Node.js Express Web Services
AJAX and REST.
Lesson 11: Web Services & API's
Representational State Transfer
WEB API.
$, $$, $$$ API testing Edition
Lesson 11: Web Services and API's
Integrating REST API and SQL Server JSON Functions
REST APIs Maxwell Furman Department of MIS Fox School of Business
RESTful Web Services.
Python and REST Kevin Hibma.
.NET Framework V3.5+ & RESTful web services
Chengyu Sun California State University, Los Angeles
Presentation transcript:

Google Data Protocol Guy Mark Lifshitz

Motivation Google’s Mission: – Organize the world’s information – Make information universally accessible – Provide tools to access your information Avoid limitations on contexts: – Not limited to Google – Not limited to browsers

Foundation REST AtomPub JSON RSS

REST “Representational state transfer”

REST Simple Lightweight Scalable Maps well to representing and exposing data

REST 1. Client sends a request to server 2. Server process the request 3. Server returns a response

AtomPub “Atom Publishing Protocol” (RFC 5023)

AtomPub Originally created for blogs Feed based Feeds are found at a specific URI An Atom Reader looks for entries in a feed

AtomPub Create Retrieve Update Delete

AtomPub Create – PUT Retrieve – GET Update – GET, modify feed, PUT Delete – DELETE

Calendar Atom Feed Google Calendar T10:46:25.244Z Coach's's personal settings 1 Coach T10:46:25.245Z

Calendar Atom Feed Google Calendar T10:46:25.244Z Coach's's personal settings 1 Coach T10:46:25.245Z

Calendar Atom Feed Google Calendar T10:46:25.244Z Coach's's personal settings 1 Coach T10:46:25.245Z

Calendar Atom Feed Google Calendar T10:46:25.244Z Coach's's personal settings 1 Coach T10:46:25.245Z

Calendar Atom Feed Google Calendar T10:46:25.244Z Coach's's personal settings 1 Coach T10:46:25.245Z

Calendar Atom Feed Google Calendar T10:46:25.244Z Coach's's personal settings 1 Coach T10:46:25.245Z

Calendar Atom Feed Google Calendar T10:46:25.244Z Coach's's personal settings 1 Coach T10:46:25.245Z

JSON “ JavaScript Object notation”

JSON Properties – Lightweight data interchange format – Widespread use among web developers – Easy to read and write – Can parse JSON using any language – JSON structures map directly to data structures used in most programming languages Within the Google Data Protocol, JSON objects simply mirror the Atom representation.

JSON vs. XML "firstName": "John", "lastName": "Smith", "age": 25, "address": { "streetAddress": "21 2nd Street", "city": "New York", "state": "NY", "postalCode": "10021“ }, "phoneNumbers": [ { "type": "home“, "number": " "}, { "type": "fax", "number": " " } ], "newSubscription": false, "companyName": null

JSON vs. XML nd Street New York NY false

GData

Additional Features Authentication Queries Concurrency Common Elements Batch Processing

Authentication ClientLogin – Desktop applications – Uses text input in application "mypassword"); AuthSub – 3 rd party websites – Directs you to Google’s website.

Query Add query to the URL Basic: Events before February 11 th 2010, ordered by date ?start-max= &orderby=starttime

Query Use the API to build queries CalendarQuery myQuery = new CalendarQuery(feedUrl); myQuery.setMinimumStartTime(DateTime.parseDateTime(" T00:00:00")); myQuery.setMaximumStartTime(DateTime.parseDateTime(" T23:59:59"));... CalendarEventFeed resultFeed = myService.query(myQuery, Feed.class);

Additional Features Authentication Queries Concurrency Common Elements Batch Processing

Additional Features Authentication Queries Concurrency Common Elements – “Kines” Batch Processing

Additional Features Authentication Queries Concurrency Common Elements Batch Processing

APIs

Libraries Java.NET PHP Python JavaScript Obj-C

API Library

Links

Example public class CalendarTest { public static void main(String[] args) { CalendarService myService = new CalendarService("exampleCo-exampleApp-1.0"); "pa$$word"); URL feedUrl = new URL(" CalendarFeed resultFeed = myService.getFeed(feedUrl, CalendarFeed.class); System.out.println("Your calendars:"); System.out.println(); for (int i = 0; i < resultFeed.getEntries().size(); i++) { CalendarEntry entry = resultFeed.getEntries().get(i); System.out.println("\t" + entry.getTitle().getPlainText()); }

Request GET PUT DELETEE HEAD POST – All Methods – POST not safe or idempotent Intermediaries can be added in between – Proxies and Gateways – Can add performance

Protocol Client Server Stateless – Requests are independent (don’t know what other interactions are doing) Layered – HTTP intermdiaries can be added without changing behaviour Cacheable

REST Architectural Style Architecture of the web HTTP (protocol) Request Response. Client requests from server, and server responds.

Extends Atom 1.0 RSS 2.0 Atom Publishing Protocol (APP). Google Data protocol extends those standards in various ways, using the extension mechanisms built into the standards. Feeds conform to either the Atom or RSS syndication formats. The publishing model conforms to the Atom Publishing Protocol.

AtomPub “Atom Publishing Protocol” (RFC 5023) Web syndication is an effective and popular method for providing and aggregating content. It also lets you send data to Google and update data that Google maintains.

Benefits Efficiency – Caches Scalability – Large set of origin servers Performance to user – Partial rendering of html and such.

Calendar Feed <feed xmlns=" xmlns:openSearch=" xmlns:gCal=" xmlns:gd=" gd:etag="W/"Ck8FQ3Y4cCp7I2A9WxVVEkU.""> T10:46:25.244Z Coach's's personal settings Coach Google Calendar T10:46:25.245Z T10:46:25.245Z

Calendar Feed <feed xmlns=" xmlns:openSearch=" xmlns:gCal=" xmlns:gd=" gd:etag="W/"Ck8FQ3Y4cCp7I2A9WxVVEkU.""> T10:46:25.244Z Coach's's personal settings Coach Google Calendar T10:46:25.245Z T10:46:25.245Z

Calendar Feed <feed xmlns=" xmlns:openSearch=" xmlns:gCal=" xmlns:gd=" gd:etag="W/"Ck8FQ3Y4cCp7I2A9WxVVEkU.""> T10:46:25.244Z Coach's's personal settings Coach Google Calendar T10:46:25.245Z T10:46:25.245Z

Calendar Feed T10:46:25.245Z

Atom Feeds Example Feed A subtitle. urn:uuid:60a76c80-d399-11d9-b91C e0af T18:30:02Z John Doe Atom-Powered Robots Run Amok urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a T18:30:02Z Some text.

Atom Feeds Example Feed A subtitle. urn:uuid:60a76c80-d399-11d9-b91C e0af T18:30:02Z John Doe Atom-Powered Robots Run Amok urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a T18:30:02Z Some text.

Atom Feeds Example Feed A subtitle. urn:uuid:60a76c80-d399-11d9-b91C e0af T18:30:02Z John Doe Atom-Powered Robots Run Amok urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a T18:30:02Z Some text.

Atom Feeds Example Feed A subtitle. urn:uuid:60a76c80-d399-11d9-b91C e0af T18:30:02Z John Doe Atom-Powered Robots Run Amok urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a T18:30:02Z Some text.

Atom Feeds Example Feed A subtitle. urn:uuid:60a76c80-d399-11d9-b91C e0af T18:30:02Z John Doe Atom-Powered Robots Run Amok urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a T18:30:02Z Some text.

Atom Feeds Example Feed A subtitle. urn:uuid:60a76c80-d399-11d9-b91C e0af T18:30:02Z John Doe Atom-Powered Robots Run Amok urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a T18:30:02Z Some text.

Atom Feeds Example Feed A subtitle. urn:uuid:60a76c80-d399-11d9-b91C e0af T18:30:02Z John Doe Atom-Powered Robots Run Amok urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a T18:30:02Z Some text.