Years of developer support and close to 100 APIs has informed many practices at Google on how to build scalable API infrastructure. When given the chance to push the reset button on our API infrastructure we rolled in what we learned from all those years, and this session covers those lessons learned and best practices we adopted.
While still building on a RESTful base, we have abandoned AtomPub as the base of our APIs, learning that while the collection idiom of the Atom Publishing Protocol covered many situations, it did not cover all of them, and the cognitive overhead of trying to convert every data structure to and from the Atom Syndication Format introduced friction, both on the developer implementing the API and the developer consuming the API. Other best practices we’ve adopted are to build APIs from an explicit definition of the service, as opposed to an implicit definition as expressed through code, and to expose a machine readable representation of every API to external users. Generating client libraries must be totally automatable, and you must pay as much attention to the needs of internal developers building APIs as you pay to external customers consuming APIs.
Joe Gregorio is a software engineer working on APIs at Google. He is a member of the AtomPub Workgroup, editor of the Atom Publishing Protocol, co-author of the URI Templates spec, and has a deep interest in web technologies, writing “The RESTFul Web” column for the online O’Reilly publication XML.com, writing the first desktop aggregator written in C#, and publishing various Python modules to help in putting together RESTful web services such as mimeparse, httplib2, and the google-api-python-client. He’s interested in REST, web services, Python, APIs, URI Templates, Atom Publishing Protocol, Big Data, or any linear combination of such.
Comments on this page are now closed.
For information on exhibition and sponsorship opportunities at the conference, contact Sharon Cordesse at (707) 827-7065 or email@example.com.
View a complete list of OSCON contacts