Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
APIs and the Interconnected Web
Search
Darcy Laycock
March 15, 2013
Programming
330
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
APIs and the Interconnected Web
What APIs are, How APIs are increasingly important and how to make APIs that developers love.
Darcy Laycock
March 15, 2013
More Decks by Darcy Laycock
See All by Darcy Laycock
Learning by doing
sutto
1
110
Hacking Sidekiq for Fun (and Profit) - RubyConf Australia 2014
sutto
2
650
Building APIs Developers Love (LCA2014)
sutto
0
130
Rails Girls Perth 2013 - Intro Slides
sutto
0
140
Rails Girls Perth 2013 - Closing Slides
sutto
0
120
Testing in Ruby
sutto
3
220
Dr Smalltalk
sutto
1
160
port80 - Future of the Web
sutto
2
300
API Driven Applications
sutto
14
7.3k
Other Decks in Programming
See All in Programming
そのデザイントークン、Flutterでも同じ見た目になりますか?
nakamizu
0
310
Materialが消えた日 〜真っ白なFlutterキャンバスにRenderObjectで絵を描く〜
umigishiaoi
0
150
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
220
ChromeでローカルLLM
ryu1013
0
200
AIが実装を担う時代の「技術設計」と「チームマネジメント」
kamina_zzz
2
220
複数ドメインを一つのアプリに統合するFlutterの設計と運用_FlutterKaigi2026登壇資料(須永高弘)
takahirosunaga
0
160
Vapor Mode でアクセシビリティは 壊れないか検証した話
fuqda
1
330
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
4
3.7k
エージェントを使い続けるためのメタワーク / Meta-work for keeping using the agent
rkaga
6
2.2k
Web Framework Benchmark Battle 2026, Any%
a_matsuda
3
3.1k
Spec-Driven Development - Why Vaadin Is the Perfect Fit
simas
PRO
0
230
SODA - FACT BOOK(JP)
sodainc
1
40k
Featured
See All Featured
Chasing Engaging Ingredients in Design
codingconduct
0
390
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
350
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
610
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
660
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.5k
Code Review Best Practice
trishagee
74
20k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.4k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
650
Prompt Engineering for Job Search
mfonobong
0
580
The Cost Of JavaScript in 2023
addyosmani
56
10k
Transcript
APIs - and - The Interconnected Web
I’m Darcy.
[email protected]
@sutto github.com/sutto
Filter Squad and we make apps as Discovr
I make and consume APIs.
If I talk too fast, yell “slow down”.
The Promise
“The Open Web”
... but not as you know it.
We’re still in a walled garden.
The Web is more than HTML, CSS and JavaScript.
The Web is a giant graph of data.
We’re not just talking about open standards.
Making data accessible.
Hack & Build upon the shoulders of giants.
The ability to make our own “web”.
And to share that web with others.
What is an API?
“An application programming interface (API) is a protocol intended to
be used as an interface by software components to communicate with each other”
None
Structured, Parseable Data.
None
{ "id": "723723854", "name": "Darcy Laycock", "first_name": "Darcy", "last_name": "Laycock",
"link": "https://www.facebook.com/darcy.laycock", "username": "darcy.laycock", "gender": "male", "locale": "en_GB" }
None
{ "login": "Sutto", "id": 553, "avatar_url": "https://truncated-url-goes-here/", "gravatar_id": "72d5f419e4a520ff4fe452400eac83d4", "url":
"https://api.github.com/users/Sutto", "html_url": "https://github.com/Sutto", "followers_url": "https://api.github.com/users/Sutto/followers", "following_url": "https://api.github.com/users/Sutto/following", "gists_url": "https://api.github.com/users/Sutto/gists{/gist_id}", "starred_url": "https://api.github.com/users/Sutto/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/Sutto/subscriptions", "organizations_url": "https://api.github.com/users/Sutto/orgs", "repos_url": "https://api.github.com/users/Sutto/repos", "events_url": "https://api.github.com/users/Sutto/events{/privacy}", "received_events_url": "https://api.github.com/users/Sutto/received_events", "type": "User", "name": "Darcy Laycock", "company": "Filter Squad", "blog": "blog.ninjahideout.com", "location": "Perth, Western Australia", "email": "
[email protected]
", "hireable": false, "bio": null, "public_repos": 66, "followers": 210, "following": 209, "created_at": "2008-02-21T05:29:17Z", "updated_at": "2013-03-02T06:37:19Z", "public_gists": 112 }
Specifically for computer consumption.
An interface.
A promise.
The Web is not Web Sites.
The Web is HTTP.
Source: http://www.flickr.com/photos/girliemac/sets/72157628409467125
A Brief History of APIs.
HTTP
1991: HTTP 0.9
1996: HTTP 1.0
1997: HTTP 1.1
A stateless protocol.
Built for Hypertext.
WS -
WSDL
SOAP
We Love XML!
We Hate XML!
None
Atom
Web 2.0
aka “The Rise of the API”
REST
representational state transfer
Roy Fielding
REST
“REST”
Hypermedia!
Rich Internet Applications
None
The Age of the App.
None
None
70% of what I do on my phone every day
relies on an API.
APIs for...
None
Single Page Apps
Companies building tools for building APIs.
Why APIs Matter
Estimated 2,400,000,000+ on the internet. (http://www.internetworldstats.com/stats.htm)
Estimated 1,000,000,000+ smart phones in use. (http://bit.ly/eotw13-api-smartphone)
Facebook http://developers.facebook.com/
http://graph.facebook.com/quairading
Google Geocoding http://bit.ly/eotw13-api-geocoding
None
Twilio http://twilio.com/
Source: http://www.twilio.com/voice
Amazon Web Services http://aws.amazon.com
None
SoundCloud http://developers.soundcloud.com
None
Tesla Model S API http://bit.ly/eotw13-api-tesla
None
None
AirPlay http://nto.github.com/AirPlay.html
Source: http://www.flickr.com/photos/istig/5749756038/
Perth Transit http://doc.perthtransit.com
None
IFTTT http://iftt.com
None
How to make developers love you.
Because good just isn’t enough.
K.I.S.S.
Do just enough.
Treat your API as a communication medium.
Model it on languages.
Nouns are objects your API can expose.
Verbs are things you can do to APIs.
Adjectives are metadata.
Think in Object Graphs.
Be pragmatic.
Be consistent.
Make it easy to debug.
apiary.io
None
Start with JSON.
Design for JSON.
Build out as needed.
Don’t reinvent auth.
None
Always version your API.
It means you won’t break promises changing things.
Header based vs Path based.
/v1/ or /1/ at the start of the url.
Understand HTTP.
Incredibly simple!* * for varying definitions of simple.
Request / Response
GET POST HEAD
PUT DELETE TRACE CONNECT OPTIONS
PATCH LINK UNLINK
Status Codes
200 201 404 403 422
Headers!
X-Something-Huh: yes
Client Server Gateway
Caching!
ETags vs Cache-Control
Source: http://www.flickr.com/photos/samuraislice/3318411982/
Documentation is critical.
http://developer.github.com/v3/users/
Easy to read docs == Hard to write docs.
Explain things.
Explain how to use it.
None
If it takes me a day to see results, I’ll
just give up.
The browser is just another client.
None
Hypermedia
None
Similar in design to the web itself.
HTTP is about Hypermedia.
HTTP is about Hypermedia.
HATEOS
Hypermedia as the Engine of Application State.
Similar in spirit to REST as in Roy Fielding’s thesis.
Self Evident.
Discoverable.
Consistent.
JSON-HAL http://stateless.co/hal_specification.html
Collection+JSON http://bit.ly/eotw13-api-cjson
Tends to simplify API design.
Practical Concerns.
In closing
APIs are everywhere.
APIs power the web.
APIs help make the hard, easy.
Good APIs need consistency.
Don’t just build APIs.
Build APIs people love.
Learn HTTP
Live HTTP
Love HTTP
Embrace Data.
Share Data.
Care about making good APIs
Because you can make good APIs.
Because you can design great APIs.
Because the web is more than just HTML, CSS and
JS.
None
Thanks! http://developer.github.com http://apiary.io http://www.apigee.com http://soundcloud.com http://twilio.com http://developers.soundcloud.com http://www.designinghypermediaapis.com http://apigee.com/about/content/web-api-design http://speakerdeck.com/sutto