SlideShare une entreprise Scribd logo
1  sur  58
Télécharger pour lire hors ligne
Diving and digital data
For example: Fotografie
Name all the Fish....
Talk about accomadations....
and the dangers for you and your data...
Clouds
Google Data APIs
Frank Mantek
“The benefit [of GData] is that you'd have a single
 API that could be used to query, update, and index
 structured data on the web--anywhere on the web.
 It's a pretty powerful vision and something I didn't
 expect to see for a couple more
 years.”



Jeremy Zawodny, Yahoo
Contrast this with the API efforts on Yahoo! Developer Network or
Windows Live Dev which are an inconsistent glop of incompatible
RESTful protocols, SOAP APIs and XML-RPC methods all under the
same roof. In the Google case, an app that can read and write data
to Blogger can also do so to Google Calendar or Picasa Web Albums
with minimal changes. This is not the case when using APIs provided
by two Yahoo! services (e.g . Flickr and del.icio.us) or two Windows
Live services (e.g. Live Search and Windows Live Spaces) which
use completely different protocols, object models and authentication
mechanisms even though provided by the same vendor.quot;

 Dare Obasanjo, Architect, Microsoft
Google’s APIs

     • Google Offers Many APIs
       – AJAX APIs – Presentation Oriented APIs
          • Maps, Search, Feeds
       – Google Data APIs – Full Fidelity Data APIs
          • Calendar, Blogger, Base, ...
       – AdWords API – SOAP based RPC API
       – Gadgets API – Portable JavaScript “Applets”
       – Checkout API – ReST based API
       – Desktop API – Extended Search
       – ... and many more ...


                                                       QCon
11
                                                       2008
Building Web Services the REST way




                                     QCon
                                     2008
Building Web Services the REST way

• SOAP:
  – Arbitrary actions (verbs)
  – Arbitrarily data payloads
  – Complex service description and behavior (WSDL)




                                                      QCon
                                                      2008
Building Web Services the REST way

• SOAP:
  – Arbitrary actions (verbs)
  – Arbitrarily data payloads
  – Complex service description and behavior (WSDL)
• REST:
  – Common actions (HTTP Get, Post, Put, Delete)
  – Operate on whole resources (XML documents)
  – Uniform resource names and links (URIs)




                                                      QCon
                                                      2008
Building Web Services the REST way

• SOAP:
  – Arbitrary actions (verbs)
  – Arbitrarily data payloads
  – Complex service description and behavior (WSDL)
• REST:
  – Common actions (HTTP Get, Post, Put, Delete)
  – Operate on whole resources (XML documents)
  – Uniform resource names and links (URIs)
• Why REST over SOAP?
  – It’s how the web works! (stateless, cachable, scalable)
  – It’s easy on the programmer
                                                              QCon
                                                              2008
Elements of the Data API

                  • Simple Format
        Atom
                     – Atom Syndication
     Publishing          Format
      Protocol    • Simple Protocol
                     – HTTP

                                          Google
                  • Google Extensions
                                           Data
                     –   Data Model
                                           APIs
                     –   Query
                     –   Concurrency
                     –   Authentication

                                               QCon
13
                                               2008
Data Model: Standard Atom

     <entry xmlns:gd=quot;http://schemas.google.com/g/2005quot;>
         <category scheme=quot;http://schemas.google.com/g/2005#kindquot;
                   term=quot;http://schemas.google.com/g/2005#eventquot;/>
         <id>http://mycal.example.com/feeds/jo/home/full/e1a2af0</id>
         <published>2005-01-18T21:00:00Z</published>
         <updated>2006-01-01T00:00:00Z</updated>
         <title>Discuss BazMat API</title>
         <content>We will discuss integrating GData with BazMat.</content>
         <author>
              <name>Jo March</name>
         </author>
         <gd:when startTime='2005-01-18T21:00:00Z' endTime='2005-01-18T22:00:00Z'>
              <gd:reminder minutes='15'/>
         </gd:when>
         <gd:where valueString='Building 41, Room X'/>
         <gd:eventStatus value=quot;http://schemas.google.com/g/2005#event.confirmedquot;/>
         <gd:visibility value=quot;http://schemas.google.com/g/2005#event.publicquot;/>
     </entry>


                                                                                      QCon
14
                                                                                      2008
Data Model: Google Kinds and Extensions

     <entry xmlns:gd=quot;http://schemas.google.com/g/2005quot;>
         <category scheme=quot;http://schemas.google.com/g/2005#kindquot;
                   term=quot;http://schemas.google.com/g/2005#eventquot;/>
         <id>http://mycal.example.com/feeds/jo/home/full/e1a2af0</id>
         <published>2005-01-18T21:00:00Z</published>
         <updated>2006-01-01T00:00:00Z</updated>
         <title>Discuss BazMat API</title>
         <content>We will discuss integrating GData with BazMat.</content>
         <author>
              <name>Jo March</name>
         </author>
         <gd:when startTime='2005-01-18T21:00:00Z' endTime='2005-01-18T22:00:00Z'>
              <gd:reminder minutes='15'/>
         </gd:when>
         <gd:where valueString='Building 41, Room X'/>
         <gd:eventStatus value=quot;http://schemas.google.com/g/2005#event.confirmedquot;/>
         <gd:visibility value=quot;http://schemas.google.com/g/2005#event.publicquot;/>
     </entry>


                                                                                      QCon
15
                                                                                      2008
Querying a Feed

• Full Text Search
   – http://www.example.com/feeds/friends?q=John
• Categories (Tags)
   – http://www.example.com/feeds/friends/-/work|play
• Update Time
  – http://www.example.com/feeds/friends?
     updated-min=2005-08-09T10:57:00-08:00
• Custom ...
  – eg. spreadsheets supports min-row, max-row, ...
• Output Format
  – http://www.example.com/feeds/friends?alt=json

                                                        QCon
                                                        2008
Optimistic Concurrency

     GET /feeds/entry1

     200 OK
     <link rel=quot;editquot; href=quot;http://www.example.com/feeds/entry1/version1/quot;/>



     PUT /feeds/entry1/version1/

     200 OK
     <link rel=quot;editquot; href=quot;http://www.example.com/feeds/entry1/version2/quot;/>



     DELETE /feeds/entry1/version1/

     409 CONFLICT


                                                                               QCon
17
                                                                               2008
Security and Authentication

     • Authentication for Desktop Apps
        – Users authenticates to Google Authentication Service
        – Google returns Auth Token to Application
     • Authentication for Web Apps
        – Web Application redirects to Google Auth Service (1)
        – Login to Google, redirect back to app with Auth Token (2)
        – Web Application uses Token to proxy GData (3)
        – Password remains secure

                                          (1b)                 Accounts
                  (2a)                                 Authentication
         Client
        Browser
                  (1a)
                                                               Calendar
                                Web App          (3)
                                                         data API
                         (2b)
                                                                          QCon
18
                                                                          2008
Atom Publishing Everywhere?

     •   Google Apps data API
     •   Google Base data API
     •   Blogger data API
     •   Google Calendar data API
     •   Google Code Search data API
     •   Google Notebook data API
     •   Picasa Web Albums data API
     •   Google Spreadsheets data API
     •   Google Doclist data API
     •   YouTube data API
     •   ... and the list is growing ...
                                           QCon
19
                                           2008
Developer Support

• Open Source Client Libraries
                        – .NET
   – Java
                        – Python
   – PHP
                        – JSON (JavaScript)
   – Objective C
• Contributed Client Libraries
   – Ruby               – Perl              – Lisp
• Documentation
   – Developer Guides
   – Knowledge Base
• Active Developer Community (Google Groups)
   – Google Data API Group, ...
   – Google Groups Wiki ...

                                                     QCon
                                                     2008
Google Apps data API

     • Functionality
       – Programmatically enable access to these Google Apps
          applications
       – Create, retrieve, update and delete user accounts,
          nicknames and email lists.
     • Supported Client Libraries
       – Basic HTTP
       – Java
       – .NET




                                                               QCon
21
                                                               2008
Google Base data API

     • Functionality
       – Query Google Base data to create applications and
           mashups.
       – Input and manage Google Base items programmatically.
     • Supported Client Libraries
       –   Basic HTTP
       –   Java
       –   .NET
       –   PHP
       –   Python



                                                                QCon
22
                                                                2008
Blogger

     • Functionality
       – Create new blog posts, edit or delete existing posts, and
           query for posts that match particular criteria.
     • Supported Client Libraries
       –   Basic HTTP
       –   Java
       –   .NET
       –   PHP
       –   Python
       –   Objective C




                                                                     QCon
23
                                                                     2008
Google Calendar

     • Functionality
       – Create new events, edit or delete existing events, and query
           for events that match particular criteria.
     • Supported Client Libraries
       –   Basic HTTP
       –   Java
       –   .NET
       –   PHP
       –   Python
       –   Objective C




                                                                  QCon
24
                                                                  2008
Google Code Search

     • Functionality
       – Read Only - Query for public code snippets that match
           particular criteria.
     • Supported Client Libraries
       –   Basic HTTP
       –   Java
       –   .NET
       –   PHP
       –   Python
       –   Objective C



                                                                 QCon
25
                                                                 2008
Picasa Web Albums

     • Functionality
       – Request a list of a user's albums, photos, comments, or
          tags, edit or delete content in an existing entry, and query
          the content in an existing entry
     • Supported Client Libraries
       – Basic HTTP
       – Java
       – .NET support soon




                                                                         QCon
26
                                                                         2008
Google Spreadsheets

     • Functionality
       – Request a list of a user's spreadsheets, edit or delete
           content in an existing Spreadsheets worksheet, and query
           the content in an existing Spreadsheets worksheet
     • Supported Client Libraries
       –   Basic HTTP
       –   Java
       –   .NET
       –   Python




                                                                   QCon
27
                                                                   2008
What Some Developers are Doing

                      Ambient Clock
                       (Calendar)
                                      Phixr Online
                                      Photo Editor
                                      (PicasaWeb)




 Timesheets with
Google Office Tools
 (Spreadsheets,
    Calendar)




                                                     QCon
                                                     2008
Spanning Sync (www.spanningsync.com)

     • two way synchronization between iCal and Google
      Calendar
     • Client/Server architecture, all GData operations happen on
      the server
     • Straight HTTP calls using PHP
     • around 6M GData API calls per day




                                                              QCon
29
                                                              2008
Gumiyo (www.gumiyo.com)

     • Buyer/Seller platform using Google Base data api
     • Allows creation of ads completely on your mobile device
      (take picture, send MMS to your account)
     • Searching/buying on the phone
     • Rule based alert system that sends real time
      notifications to your phone




                                                             QCon
30
                                                             2008
Bloghud (www.bloghud.com)

     • This is a Second Life “Heads Up” device (900 Linden for
      the Pro Version)
     • It allows you to post to your blog from inside the virtual
      world, using Google Authentication for Web Apps
     • /9 “your message” posts or drag text based notecards on
      the Hud




                                                                    QCon
31
                                                                    2008
Choosing REST over SOAP

• Technologies of REST are well understood
  • HTTP, URIs, XML, Atom
• Four actions are sufficient
  • most of the time (90% solution)
• Developers like it
  • Every API behaves the same
• REST was a good choice




                                             QCon
                                             2008
Is REST as flexible as SOAP?

• Some Operations are not obvious
  – eg. transactions
  – eg. send notification with reply

• Be creative
  • notifications as side effects of update
  • drop box feeds (insert only)
  • virtually infinite feeds (get & update only)


• REST is sufficient, but you may have to be creative

                                                        QCon
                                                        2008
Using the Atom Publishing Protocol ...




                                              QCon
34
                                              2008
Using the Atom Publishing Protocol ...

     • Good REST based design




                                              QCon
34
                                              2008
Using the Atom Publishing Protocol ...

     • Good REST based design
     • Missing Query:
       – Solution: query parameters
       – Not always sufficient ... an open issue




                                                   QCon
34
                                                   2008
Using the Atom Publishing Protocol ...

     • Good REST based design
     • Missing Query:
       – Solution: query parameters
       – Not always sufficient ... an open issue
     • Missing Authentication:
       – Solution: Google Auth
       – More secure than Basic Auth, slowed integration




                                                           QCon
34
                                                           2008
Using the Atom Publishing Protocol ...

     • Good REST based design
     • Missing Query:
       – Solution: query parameters
       – Not always sufficient ... an open issue
     • Missing Authentication:
        – Solution: Google Auth
        – More secure than Basic Auth, slowed integration
     • Concurrent Operations
        – Solution: Optimistic Concurrency via Edit URIs
        – We should have used strong eTags

                                                            QCon
34
                                                            2008
Extending the Atom Publishing Protocol ...

     • Engineers care about efficiency

     • Forced Read-Modify-Write
       – Solution: URIs based on the data (ACL)

     • Batch Processing
       – Solution: GData batch extension

     • Incremental Changes / Updates
       – an open issue ...


                                                  QCon
35
                                                  2008
Using Atom Data Format ...




                                  QCon
36
                                  2008
Using Atom Data Format ...

     • Originally designed for blogs not data




                                                QCon
36
                                                2008
Using Atom Data Format ...

     • Originally designed for blogs not data

     • Drawbacks
       – syntax constraints (atom:content, atom:updated)




                                                           QCon
36
                                                           2008
Using Atom Data Format ...

     • Originally designed for blogs not data

     • Drawbacks
       – syntax constraints (atom:content, atom:updated)

     • Benefits
       –   standardized (IETF)
       –   extensible
       –   useful fields (atom:id, atom:updated)
       –   can use a feed reader (cool!)




                                                           QCon
36
                                                           2008
Using Atom Data Format ...

     • Originally designed for blogs not data

     • Drawbacks
       – syntax constraints (atom:content, atom:updated)

     • Benefits
       –   standardized (IETF)
       –   extensible
       –   useful fields (atom:id, atom:updated)
       –   can use a feed reader (cool!)


     • Overall, a very good choice

                                                           QCon
36
                                                           2008
Modeling Data in Atom ...




                                 QCon
37
                                 2008
Modeling Data in Atom ...

     • How to indicate extensions / semantics?
       – Solution: atom:category URI to indicate “kind”
       – Should have been human readable string




                                                          QCon
37
                                                          2008
Modeling Data in Atom ...

     • How to indicate extensions / semantics?
       – Solution: atom:category URI to indicate “kind”
       – Should have been human readable string

     • How to indicate related feeds and entries?
       – Solutions: ...
          • link@rel, gd:feedLink, gd:entryLink, content@href
       – No clear standard, try to be consistent


                                                                QCon
37
                                                                2008
Designing New Data Formats ...




                                      QCon
38
                                      2008
Designing New Data Formats ...

     • The Idea: GD-namespace
       – Create reusable extensions and kinds
       – Manage extensions in one namespace




                                                QCon
38
                                                2008
Designing New Data Formats ...

     • The Idea: GD-namespace
       – Create reusable extensions and kinds
       – Manage extensions in one namespace




                                                QCon
38
                                                2008
Designing New Data Formats ...

     • The Idea: GD-namespace
       – Create reusable extensions and kinds
       – Manage extensions in one namespace

     • Our Experience:
       – Almost every Google API has extended it
       – Used only by Google APIs (so far)




                                                   QCon
38
                                                   2008
Designing New Data Formats ...

     • The Idea: GD-namespace
       – Create reusable extensions and kinds
       – Manage extensions in one namespace

     • Our Experience:
       – Almost every Google API has extended it
       – Used only by Google APIs (so far)

     • Alternatives:
       – Reuse existing XML schemas (GeoRSS, MediaRSS)
       – Create an ecology of ‘kinds’ (GData ACL)

                                                         QCon
38
                                                         2008
Care for your Developers

• Protocol Centric & Language Agnostic

• Open your Code

• Give Fair Warnings of Changes

• Meet your Developers




                                         QCon
                                         2008
Do you feel lucky?

     • Questions, comments?




                              QCon
40
                              2008
Google G Data Reading And Writing Data On The Web

Contenu connexe

Tendances

GraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademy
GraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademyGraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademy
GraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademyMarcinStachniuk
 
Vaadin DevDay 2017 - Web Components
Vaadin DevDay 2017 - Web ComponentsVaadin DevDay 2017 - Web Components
Vaadin DevDay 2017 - Web ComponentsPeter Lehto
 
Vaadin 8 with Spring Framework
Vaadin 8 with Spring FrameworkVaadin 8 with Spring Framework
Vaadin 8 with Spring FrameworkPeter Lehto
 
Techlunch - Dependency Injection with Vaadin
Techlunch - Dependency Injection with VaadinTechlunch - Dependency Injection with Vaadin
Techlunch - Dependency Injection with VaadinPeter Lehto
 
Vaadin DevDay 2017 - DI your UI
Vaadin DevDay 2017 - DI your UIVaadin DevDay 2017 - DI your UI
Vaadin DevDay 2017 - DI your UIPeter Lehto
 
Building impressive layout systems with vaadin
Building impressive layout systems with vaadinBuilding impressive layout systems with vaadin
Building impressive layout systems with vaadinPeter Lehto
 
Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008Jonas Follesø
 
Wicket Next (1.4/1.5)
Wicket Next (1.4/1.5)Wicket Next (1.4/1.5)
Wicket Next (1.4/1.5)jcompagner
 
Vaadin 8 with Spring Frameworks AutoConfiguration
Vaadin 8 with Spring Frameworks AutoConfigurationVaadin 8 with Spring Frameworks AutoConfiguration
Vaadin 8 with Spring Frameworks AutoConfigurationPeter Lehto
 
Binding business data to vaadin components
Binding business data to vaadin componentsBinding business data to vaadin components
Binding business data to vaadin componentsPeter Lehto
 
The Big Picture and How to Get Started
The Big Picture and How to Get StartedThe Big Picture and How to Get Started
The Big Picture and How to Get Startedguest1af57e
 
[@IndeedEng] Building Indeed Resume Search
[@IndeedEng] Building Indeed Resume Search[@IndeedEng] Building Indeed Resume Search
[@IndeedEng] Building Indeed Resume Searchindeedeng
 
Building modular monoliths that could scale to microservices (only if they ne...
Building modular monoliths that could scale to microservices (only if they ne...Building modular monoliths that could scale to microservices (only if they ne...
Building modular monoliths that could scale to microservices (only if they ne...David Gómez García
 
Vaadin 8 - Data Binding with Binder
Vaadin 8 - Data Binding with BinderVaadin 8 - Data Binding with Binder
Vaadin 8 - Data Binding with BinderPeter Lehto
 
Vaadin with Java EE 7
Vaadin with Java EE 7Vaadin with Java EE 7
Vaadin with Java EE 7Peter Lehto
 
Apache Wicket Web Framework
Apache Wicket Web FrameworkApache Wicket Web Framework
Apache Wicket Web FrameworkLuther Baker
 
After max+phonegap
After max+phonegapAfter max+phonegap
After max+phonegapyangdj
 

Tendances (19)

GraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademy
GraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademyGraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademy
GraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademy
 
Vaadin DevDay 2017 - Web Components
Vaadin DevDay 2017 - Web ComponentsVaadin DevDay 2017 - Web Components
Vaadin DevDay 2017 - Web Components
 
Vaadin 8 with Spring Framework
Vaadin 8 with Spring FrameworkVaadin 8 with Spring Framework
Vaadin 8 with Spring Framework
 
Techlunch - Dependency Injection with Vaadin
Techlunch - Dependency Injection with VaadinTechlunch - Dependency Injection with Vaadin
Techlunch - Dependency Injection with Vaadin
 
Vaadin DevDay 2017 - DI your UI
Vaadin DevDay 2017 - DI your UIVaadin DevDay 2017 - DI your UI
Vaadin DevDay 2017 - DI your UI
 
Think jQuery
Think jQueryThink jQuery
Think jQuery
 
Building impressive layout systems with vaadin
Building impressive layout systems with vaadinBuilding impressive layout systems with vaadin
Building impressive layout systems with vaadin
 
Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008
 
Wicket Next (1.4/1.5)
Wicket Next (1.4/1.5)Wicket Next (1.4/1.5)
Wicket Next (1.4/1.5)
 
Vaadin 8 with Spring Frameworks AutoConfiguration
Vaadin 8 with Spring Frameworks AutoConfigurationVaadin 8 with Spring Frameworks AutoConfiguration
Vaadin 8 with Spring Frameworks AutoConfiguration
 
Binding business data to vaadin components
Binding business data to vaadin componentsBinding business data to vaadin components
Binding business data to vaadin components
 
Data binding
Data bindingData binding
Data binding
 
The Big Picture and How to Get Started
The Big Picture and How to Get StartedThe Big Picture and How to Get Started
The Big Picture and How to Get Started
 
[@IndeedEng] Building Indeed Resume Search
[@IndeedEng] Building Indeed Resume Search[@IndeedEng] Building Indeed Resume Search
[@IndeedEng] Building Indeed Resume Search
 
Building modular monoliths that could scale to microservices (only if they ne...
Building modular monoliths that could scale to microservices (only if they ne...Building modular monoliths that could scale to microservices (only if they ne...
Building modular monoliths that could scale to microservices (only if they ne...
 
Vaadin 8 - Data Binding with Binder
Vaadin 8 - Data Binding with BinderVaadin 8 - Data Binding with Binder
Vaadin 8 - Data Binding with Binder
 
Vaadin with Java EE 7
Vaadin with Java EE 7Vaadin with Java EE 7
Vaadin with Java EE 7
 
Apache Wicket Web Framework
Apache Wicket Web FrameworkApache Wicket Web Framework
Apache Wicket Web Framework
 
After max+phonegap
After max+phonegapAfter max+phonegap
After max+phonegap
 

Similaire à Google G Data Reading And Writing Data On The Web

Frank Mantek Google G Data
Frank Mantek Google G DataFrank Mantek Google G Data
Frank Mantek Google G Datadeimos
 
Integrating Google APIs into Your Applications
Integrating Google APIs into Your ApplicationsIntegrating Google APIs into Your Applications
Integrating Google APIs into Your ApplicationsChris Schalk
 
Google Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocialGoogle Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocialPatrick Chanezon
 
GDD Japan 2009 - Designing OpenSocial Apps For Speed and Scale
GDD Japan 2009 - Designing OpenSocial Apps For Speed and ScaleGDD Japan 2009 - Designing OpenSocial Apps For Speed and Scale
GDD Japan 2009 - Designing OpenSocial Apps For Speed and ScalePatrick Chanezon
 
iPhone Development For Experienced Web Developers
iPhone Development For Experienced Web DevelopersiPhone Development For Experienced Web Developers
iPhone Development For Experienced Web Developerslisab517
 
Using the Google AJAX APIs
Using the Google AJAX APIsUsing the Google AJAX APIs
Using the Google AJAX APIsChris Schalk
 
Advanced Gadget And Ui Development Using Googles Ajax Ap Is
Advanced Gadget And Ui Development Using Googles Ajax Ap IsAdvanced Gadget And Ui Development Using Googles Ajax Ap Is
Advanced Gadget And Ui Development Using Googles Ajax Ap IsGoogleTecTalks
 
App Engine On Air: Munich
App Engine On Air: MunichApp Engine On Air: Munich
App Engine On Air: Munichdion
 
CodeCamp Iasi - Creating serverless data analytics system on GCP using BigQuery
CodeCamp Iasi - Creating serverless data analytics system on GCP using BigQueryCodeCamp Iasi - Creating serverless data analytics system on GCP using BigQuery
CodeCamp Iasi - Creating serverless data analytics system on GCP using BigQueryMárton Kodok
 
The current status of html5 technology and standard
The current status of html5 technology and standardThe current status of html5 technology and standard
The current status of html5 technology and standardWonsuk Lee
 
Applications of the REST Principle
Applications of the REST PrincipleApplications of the REST Principle
Applications of the REST Principleelliando dias
 
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008Association Paris-Web
 
Open Social Summit Korea Overview
Open Social Summit Korea OverviewOpen Social Summit Korea Overview
Open Social Summit Korea OverviewChris Schalk
 
GWT + Gears : The browser is the platform
GWT + Gears : The browser is the platformGWT + Gears : The browser is the platform
GWT + Gears : The browser is the platformDidier Girard
 
Zembly Programming Language
Zembly Programming LanguageZembly Programming Language
Zembly Programming Languagezembly
 
IPhone Web Development With Grails from CodeMash 2009
IPhone Web Development With Grails from CodeMash 2009IPhone Web Development With Grails from CodeMash 2009
IPhone Web Development With Grails from CodeMash 2009Christopher Judd
 
Connecting to Web Services on Android
Connecting to Web Services on AndroidConnecting to Web Services on Android
Connecting to Web Services on Androidsullis
 
Gimel at Dataworks Summit San Jose 2018
Gimel at Dataworks Summit San Jose 2018Gimel at Dataworks Summit San Jose 2018
Gimel at Dataworks Summit San Jose 2018Romit Mehta
 
Dataworks | 2018-06-20 | Gimel data platform
Dataworks | 2018-06-20 | Gimel data platformDataworks | 2018-06-20 | Gimel data platform
Dataworks | 2018-06-20 | Gimel data platformDeepak Chandramouli
 

Similaire à Google G Data Reading And Writing Data On The Web (20)

Frank Mantek Google G Data
Frank Mantek Google G DataFrank Mantek Google G Data
Frank Mantek Google G Data
 
Integrating Google APIs into Your Applications
Integrating Google APIs into Your ApplicationsIntegrating Google APIs into Your Applications
Integrating Google APIs into Your Applications
 
Google Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocialGoogle Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocial
 
GDD Japan 2009 - Designing OpenSocial Apps For Speed and Scale
GDD Japan 2009 - Designing OpenSocial Apps For Speed and ScaleGDD Japan 2009 - Designing OpenSocial Apps For Speed and Scale
GDD Japan 2009 - Designing OpenSocial Apps For Speed and Scale
 
iPhone Development For Experienced Web Developers
iPhone Development For Experienced Web DevelopersiPhone Development For Experienced Web Developers
iPhone Development For Experienced Web Developers
 
Using the Google AJAX APIs
Using the Google AJAX APIsUsing the Google AJAX APIs
Using the Google AJAX APIs
 
Advanced Gadget And Ui Development Using Googles Ajax Ap Is
Advanced Gadget And Ui Development Using Googles Ajax Ap IsAdvanced Gadget And Ui Development Using Googles Ajax Ap Is
Advanced Gadget And Ui Development Using Googles Ajax Ap Is
 
App Engine On Air: Munich
App Engine On Air: MunichApp Engine On Air: Munich
App Engine On Air: Munich
 
CodeCamp Iasi - Creating serverless data analytics system on GCP using BigQuery
CodeCamp Iasi - Creating serverless data analytics system on GCP using BigQueryCodeCamp Iasi - Creating serverless data analytics system on GCP using BigQuery
CodeCamp Iasi - Creating serverless data analytics system on GCP using BigQuery
 
The current status of html5 technology and standard
The current status of html5 technology and standardThe current status of html5 technology and standard
The current status of html5 technology and standard
 
Applications of the REST Principle
Applications of the REST PrincipleApplications of the REST Principle
Applications of the REST Principle
 
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
 
Open Social Summit Korea Overview
Open Social Summit Korea OverviewOpen Social Summit Korea Overview
Open Social Summit Korea Overview
 
GWT + Gears : The browser is the platform
GWT + Gears : The browser is the platformGWT + Gears : The browser is the platform
GWT + Gears : The browser is the platform
 
Web 2.0 And Ajax
Web 2.0 And AjaxWeb 2.0 And Ajax
Web 2.0 And Ajax
 
Zembly Programming Language
Zembly Programming LanguageZembly Programming Language
Zembly Programming Language
 
IPhone Web Development With Grails from CodeMash 2009
IPhone Web Development With Grails from CodeMash 2009IPhone Web Development With Grails from CodeMash 2009
IPhone Web Development With Grails from CodeMash 2009
 
Connecting to Web Services on Android
Connecting to Web Services on AndroidConnecting to Web Services on Android
Connecting to Web Services on Android
 
Gimel at Dataworks Summit San Jose 2018
Gimel at Dataworks Summit San Jose 2018Gimel at Dataworks Summit San Jose 2018
Gimel at Dataworks Summit San Jose 2018
 
Dataworks | 2018-06-20 | Gimel data platform
Dataworks | 2018-06-20 | Gimel data platformDataworks | 2018-06-20 | Gimel data platform
Dataworks | 2018-06-20 | Gimel data platform
 

Plus de QConLondon2008

J Ruby Power On The Jvm
J Ruby Power On The JvmJ Ruby Power On The Jvm
J Ruby Power On The JvmQConLondon2008
 
Market Risk System Bnp Paribas
Market Risk System Bnp ParibasMarket Risk System Bnp Paribas
Market Risk System Bnp ParibasQConLondon2008
 
14147503 Intentions Interfaces Making Patterns Concrete
14147503 Intentions Interfaces Making Patterns Concrete14147503 Intentions Interfaces Making Patterns Concrete
14147503 Intentions Interfaces Making Patterns ConcreteQConLondon2008
 
The Dom Scripting Toolkit J Query
The Dom Scripting Toolkit J QueryThe Dom Scripting Toolkit J Query
The Dom Scripting Toolkit J QueryQConLondon2008
 
Google G Data Reading And Writing Data On The Web 1
Google G Data Reading And Writing Data On The Web 1Google G Data Reading And Writing Data On The Web 1
Google G Data Reading And Writing Data On The Web 1QConLondon2008
 
Application Services On The Web Sales Forcecom
Application Services On The Web Sales ForcecomApplication Services On The Web Sales Forcecom
Application Services On The Web Sales ForcecomQConLondon2008
 
Rest Reuse And Serendipity
Rest Reuse And SerendipityRest Reuse And Serendipity
Rest Reuse And SerendipityQConLondon2008
 

Plus de QConLondon2008 (10)

J Ruby Power On The Jvm
J Ruby Power On The JvmJ Ruby Power On The Jvm
J Ruby Power On The Jvm
 
Agile Mashups
Agile MashupsAgile Mashups
Agile Mashups
 
Market Risk System Bnp Paribas
Market Risk System Bnp ParibasMarket Risk System Bnp Paribas
Market Risk System Bnp Paribas
 
A Tale Of Two Systems
A Tale Of Two SystemsA Tale Of Two Systems
A Tale Of Two Systems
 
14147503 Intentions Interfaces Making Patterns Concrete
14147503 Intentions Interfaces Making Patterns Concrete14147503 Intentions Interfaces Making Patterns Concrete
14147503 Intentions Interfaces Making Patterns Concrete
 
The Dom Scripting Toolkit J Query
The Dom Scripting Toolkit J QueryThe Dom Scripting Toolkit J Query
The Dom Scripting Toolkit J Query
 
Google G Data Reading And Writing Data On The Web 1
Google G Data Reading And Writing Data On The Web 1Google G Data Reading And Writing Data On The Web 1
Google G Data Reading And Writing Data On The Web 1
 
Application Services On The Web Sales Forcecom
Application Services On The Web Sales ForcecomApplication Services On The Web Sales Forcecom
Application Services On The Web Sales Forcecom
 
Managers In Scrum
Managers In ScrumManagers In Scrum
Managers In Scrum
 
Rest Reuse And Serendipity
Rest Reuse And SerendipityRest Reuse And Serendipity
Rest Reuse And Serendipity
 

Dernier

How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 

Dernier (20)

How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 

Google G Data Reading And Writing Data On The Web

  • 1.
  • 4. Name all the Fish....
  • 6. and the dangers for you and your data...
  • 9. “The benefit [of GData] is that you'd have a single API that could be used to query, update, and index structured data on the web--anywhere on the web. It's a pretty powerful vision and something I didn't expect to see for a couple more years.” Jeremy Zawodny, Yahoo
  • 10. Contrast this with the API efforts on Yahoo! Developer Network or Windows Live Dev which are an inconsistent glop of incompatible RESTful protocols, SOAP APIs and XML-RPC methods all under the same roof. In the Google case, an app that can read and write data to Blogger can also do so to Google Calendar or Picasa Web Albums with minimal changes. This is not the case when using APIs provided by two Yahoo! services (e.g . Flickr and del.icio.us) or two Windows Live services (e.g. Live Search and Windows Live Spaces) which use completely different protocols, object models and authentication mechanisms even though provided by the same vendor.quot; Dare Obasanjo, Architect, Microsoft
  • 11. Google’s APIs • Google Offers Many APIs – AJAX APIs – Presentation Oriented APIs • Maps, Search, Feeds – Google Data APIs – Full Fidelity Data APIs • Calendar, Blogger, Base, ... – AdWords API – SOAP based RPC API – Gadgets API – Portable JavaScript “Applets” – Checkout API – ReST based API – Desktop API – Extended Search – ... and many more ... QCon 11 2008
  • 12. Building Web Services the REST way QCon 2008
  • 13. Building Web Services the REST way • SOAP: – Arbitrary actions (verbs) – Arbitrarily data payloads – Complex service description and behavior (WSDL) QCon 2008
  • 14. Building Web Services the REST way • SOAP: – Arbitrary actions (verbs) – Arbitrarily data payloads – Complex service description and behavior (WSDL) • REST: – Common actions (HTTP Get, Post, Put, Delete) – Operate on whole resources (XML documents) – Uniform resource names and links (URIs) QCon 2008
  • 15. Building Web Services the REST way • SOAP: – Arbitrary actions (verbs) – Arbitrarily data payloads – Complex service description and behavior (WSDL) • REST: – Common actions (HTTP Get, Post, Put, Delete) – Operate on whole resources (XML documents) – Uniform resource names and links (URIs) • Why REST over SOAP? – It’s how the web works! (stateless, cachable, scalable) – It’s easy on the programmer QCon 2008
  • 16. Elements of the Data API • Simple Format Atom – Atom Syndication Publishing Format Protocol • Simple Protocol – HTTP Google • Google Extensions Data – Data Model APIs – Query – Concurrency – Authentication QCon 13 2008
  • 17. Data Model: Standard Atom <entry xmlns:gd=quot;http://schemas.google.com/g/2005quot;> <category scheme=quot;http://schemas.google.com/g/2005#kindquot; term=quot;http://schemas.google.com/g/2005#eventquot;/> <id>http://mycal.example.com/feeds/jo/home/full/e1a2af0</id> <published>2005-01-18T21:00:00Z</published> <updated>2006-01-01T00:00:00Z</updated> <title>Discuss BazMat API</title> <content>We will discuss integrating GData with BazMat.</content> <author> <name>Jo March</name> </author> <gd:when startTime='2005-01-18T21:00:00Z' endTime='2005-01-18T22:00:00Z'> <gd:reminder minutes='15'/> </gd:when> <gd:where valueString='Building 41, Room X'/> <gd:eventStatus value=quot;http://schemas.google.com/g/2005#event.confirmedquot;/> <gd:visibility value=quot;http://schemas.google.com/g/2005#event.publicquot;/> </entry> QCon 14 2008
  • 18. Data Model: Google Kinds and Extensions <entry xmlns:gd=quot;http://schemas.google.com/g/2005quot;> <category scheme=quot;http://schemas.google.com/g/2005#kindquot; term=quot;http://schemas.google.com/g/2005#eventquot;/> <id>http://mycal.example.com/feeds/jo/home/full/e1a2af0</id> <published>2005-01-18T21:00:00Z</published> <updated>2006-01-01T00:00:00Z</updated> <title>Discuss BazMat API</title> <content>We will discuss integrating GData with BazMat.</content> <author> <name>Jo March</name> </author> <gd:when startTime='2005-01-18T21:00:00Z' endTime='2005-01-18T22:00:00Z'> <gd:reminder minutes='15'/> </gd:when> <gd:where valueString='Building 41, Room X'/> <gd:eventStatus value=quot;http://schemas.google.com/g/2005#event.confirmedquot;/> <gd:visibility value=quot;http://schemas.google.com/g/2005#event.publicquot;/> </entry> QCon 15 2008
  • 19. Querying a Feed • Full Text Search – http://www.example.com/feeds/friends?q=John • Categories (Tags) – http://www.example.com/feeds/friends/-/work|play • Update Time – http://www.example.com/feeds/friends? updated-min=2005-08-09T10:57:00-08:00 • Custom ... – eg. spreadsheets supports min-row, max-row, ... • Output Format – http://www.example.com/feeds/friends?alt=json QCon 2008
  • 20. Optimistic Concurrency GET /feeds/entry1 200 OK <link rel=quot;editquot; href=quot;http://www.example.com/feeds/entry1/version1/quot;/> PUT /feeds/entry1/version1/ 200 OK <link rel=quot;editquot; href=quot;http://www.example.com/feeds/entry1/version2/quot;/> DELETE /feeds/entry1/version1/ 409 CONFLICT QCon 17 2008
  • 21. Security and Authentication • Authentication for Desktop Apps – Users authenticates to Google Authentication Service – Google returns Auth Token to Application • Authentication for Web Apps – Web Application redirects to Google Auth Service (1) – Login to Google, redirect back to app with Auth Token (2) – Web Application uses Token to proxy GData (3) – Password remains secure (1b) Accounts (2a) Authentication Client Browser (1a) Calendar Web App (3) data API (2b) QCon 18 2008
  • 22. Atom Publishing Everywhere? • Google Apps data API • Google Base data API • Blogger data API • Google Calendar data API • Google Code Search data API • Google Notebook data API • Picasa Web Albums data API • Google Spreadsheets data API • Google Doclist data API • YouTube data API • ... and the list is growing ... QCon 19 2008
  • 23. Developer Support • Open Source Client Libraries – .NET – Java – Python – PHP – JSON (JavaScript) – Objective C • Contributed Client Libraries – Ruby – Perl – Lisp • Documentation – Developer Guides – Knowledge Base • Active Developer Community (Google Groups) – Google Data API Group, ... – Google Groups Wiki ... QCon 2008
  • 24. Google Apps data API • Functionality – Programmatically enable access to these Google Apps applications – Create, retrieve, update and delete user accounts, nicknames and email lists. • Supported Client Libraries – Basic HTTP – Java – .NET QCon 21 2008
  • 25. Google Base data API • Functionality – Query Google Base data to create applications and mashups. – Input and manage Google Base items programmatically. • Supported Client Libraries – Basic HTTP – Java – .NET – PHP – Python QCon 22 2008
  • 26. Blogger • Functionality – Create new blog posts, edit or delete existing posts, and query for posts that match particular criteria. • Supported Client Libraries – Basic HTTP – Java – .NET – PHP – Python – Objective C QCon 23 2008
  • 27. Google Calendar • Functionality – Create new events, edit or delete existing events, and query for events that match particular criteria. • Supported Client Libraries – Basic HTTP – Java – .NET – PHP – Python – Objective C QCon 24 2008
  • 28. Google Code Search • Functionality – Read Only - Query for public code snippets that match particular criteria. • Supported Client Libraries – Basic HTTP – Java – .NET – PHP – Python – Objective C QCon 25 2008
  • 29. Picasa Web Albums • Functionality – Request a list of a user's albums, photos, comments, or tags, edit or delete content in an existing entry, and query the content in an existing entry • Supported Client Libraries – Basic HTTP – Java – .NET support soon QCon 26 2008
  • 30. Google Spreadsheets • Functionality – Request a list of a user's spreadsheets, edit or delete content in an existing Spreadsheets worksheet, and query the content in an existing Spreadsheets worksheet • Supported Client Libraries – Basic HTTP – Java – .NET – Python QCon 27 2008
  • 31. What Some Developers are Doing Ambient Clock (Calendar) Phixr Online Photo Editor (PicasaWeb) Timesheets with Google Office Tools (Spreadsheets, Calendar) QCon 2008
  • 32. Spanning Sync (www.spanningsync.com) • two way synchronization between iCal and Google Calendar • Client/Server architecture, all GData operations happen on the server • Straight HTTP calls using PHP • around 6M GData API calls per day QCon 29 2008
  • 33. Gumiyo (www.gumiyo.com) • Buyer/Seller platform using Google Base data api • Allows creation of ads completely on your mobile device (take picture, send MMS to your account) • Searching/buying on the phone • Rule based alert system that sends real time notifications to your phone QCon 30 2008
  • 34. Bloghud (www.bloghud.com) • This is a Second Life “Heads Up” device (900 Linden for the Pro Version) • It allows you to post to your blog from inside the virtual world, using Google Authentication for Web Apps • /9 “your message” posts or drag text based notecards on the Hud QCon 31 2008
  • 35. Choosing REST over SOAP • Technologies of REST are well understood • HTTP, URIs, XML, Atom • Four actions are sufficient • most of the time (90% solution) • Developers like it • Every API behaves the same • REST was a good choice QCon 2008
  • 36. Is REST as flexible as SOAP? • Some Operations are not obvious – eg. transactions – eg. send notification with reply • Be creative • notifications as side effects of update • drop box feeds (insert only) • virtually infinite feeds (get & update only) • REST is sufficient, but you may have to be creative QCon 2008
  • 37. Using the Atom Publishing Protocol ... QCon 34 2008
  • 38. Using the Atom Publishing Protocol ... • Good REST based design QCon 34 2008
  • 39. Using the Atom Publishing Protocol ... • Good REST based design • Missing Query: – Solution: query parameters – Not always sufficient ... an open issue QCon 34 2008
  • 40. Using the Atom Publishing Protocol ... • Good REST based design • Missing Query: – Solution: query parameters – Not always sufficient ... an open issue • Missing Authentication: – Solution: Google Auth – More secure than Basic Auth, slowed integration QCon 34 2008
  • 41. Using the Atom Publishing Protocol ... • Good REST based design • Missing Query: – Solution: query parameters – Not always sufficient ... an open issue • Missing Authentication: – Solution: Google Auth – More secure than Basic Auth, slowed integration • Concurrent Operations – Solution: Optimistic Concurrency via Edit URIs – We should have used strong eTags QCon 34 2008
  • 42. Extending the Atom Publishing Protocol ... • Engineers care about efficiency • Forced Read-Modify-Write – Solution: URIs based on the data (ACL) • Batch Processing – Solution: GData batch extension • Incremental Changes / Updates – an open issue ... QCon 35 2008
  • 43. Using Atom Data Format ... QCon 36 2008
  • 44. Using Atom Data Format ... • Originally designed for blogs not data QCon 36 2008
  • 45. Using Atom Data Format ... • Originally designed for blogs not data • Drawbacks – syntax constraints (atom:content, atom:updated) QCon 36 2008
  • 46. Using Atom Data Format ... • Originally designed for blogs not data • Drawbacks – syntax constraints (atom:content, atom:updated) • Benefits – standardized (IETF) – extensible – useful fields (atom:id, atom:updated) – can use a feed reader (cool!) QCon 36 2008
  • 47. Using Atom Data Format ... • Originally designed for blogs not data • Drawbacks – syntax constraints (atom:content, atom:updated) • Benefits – standardized (IETF) – extensible – useful fields (atom:id, atom:updated) – can use a feed reader (cool!) • Overall, a very good choice QCon 36 2008
  • 48. Modeling Data in Atom ... QCon 37 2008
  • 49. Modeling Data in Atom ... • How to indicate extensions / semantics? – Solution: atom:category URI to indicate “kind” – Should have been human readable string QCon 37 2008
  • 50. Modeling Data in Atom ... • How to indicate extensions / semantics? – Solution: atom:category URI to indicate “kind” – Should have been human readable string • How to indicate related feeds and entries? – Solutions: ... • link@rel, gd:feedLink, gd:entryLink, content@href – No clear standard, try to be consistent QCon 37 2008
  • 51. Designing New Data Formats ... QCon 38 2008
  • 52. Designing New Data Formats ... • The Idea: GD-namespace – Create reusable extensions and kinds – Manage extensions in one namespace QCon 38 2008
  • 53. Designing New Data Formats ... • The Idea: GD-namespace – Create reusable extensions and kinds – Manage extensions in one namespace QCon 38 2008
  • 54. Designing New Data Formats ... • The Idea: GD-namespace – Create reusable extensions and kinds – Manage extensions in one namespace • Our Experience: – Almost every Google API has extended it – Used only by Google APIs (so far) QCon 38 2008
  • 55. Designing New Data Formats ... • The Idea: GD-namespace – Create reusable extensions and kinds – Manage extensions in one namespace • Our Experience: – Almost every Google API has extended it – Used only by Google APIs (so far) • Alternatives: – Reuse existing XML schemas (GeoRSS, MediaRSS) – Create an ecology of ‘kinds’ (GData ACL) QCon 38 2008
  • 56. Care for your Developers • Protocol Centric & Language Agnostic • Open your Code • Give Fair Warnings of Changes • Meet your Developers QCon 2008
  • 57. Do you feel lucky? • Questions, comments? QCon 40 2008