Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
APIs are Interfaces Too
Search
API Strategy & Practice Conference
September 25, 2014
Technology
0
50
APIs are Interfaces Too
by Alex Koppel @ APIStrat 2014 in Chicago
API Strategy & Practice Conference
September 25, 2014
Tweet
Share
More Decks by API Strategy & Practice Conference
See All by API Strategy & Practice Conference
APIStrat 2016 | The end of polling: why and how to transform a REST API into a Data Streaming API (Audrey Neveu)
apistrat
12
270
APIStrat 2016 | OpenAPI Trek: Beyond API Documentation (Arnaud Lauret)
apistrat
5
210
APIStrat 2016 | Flying Dreams: Real-Time Communication from the Edge of Space (Jonathan Barton, Neha Abrol)
apistrat
1
120
APIStrat 2016 | On-prem support? That was so 1982 (Charlie Ozinga)
apistrat
0
86
APIStrat 2016 | Effortless microservices in production with Kubernetes (Ken Wronkiewicz)
apistrat
0
120
Song by Tony Blank
apistrat
0
140
API Lifecycle Manager by Steve Fonseca
apistrat
2
200
APIs In The Enterprise: How Walgreens Formed It's Digital Business by Drew Schweinfurth
apistrat
1
350
Developers Are Difficult by Andrew Noonan
apistrat
0
120
Other Decks in Technology
See All in Technology
エンジニアのキャリアをちょっと楽しくする3本の軸/Three Pillars to Make an Engineer's Career More Enjoyable
kwappa
0
2.7k
DMM.com アルファ室採用案内資料
hsugita
1
160
アクセス制御にまつわる改善 / Improving access control
itkq
0
550
VS CodeでAWSを操作しよう
smt7174
8
1.7k
長期間TiDBを使ってきた話 @ 私たちはなぜNewSQLを使うのかTiDB選定5社が語る選定理由と活用LT / Experiences with TiDB Over Time
chibiegg
2
900
IaCジェネレーターとBedrockで詳細設計書を生成してみた
tsukasa_ishimaru
2
280
Terraformあれやこれ/terraform-this-and-that
emiki
8
1.4k
検証を通して見えてきたTiDBの性能特性
lycorptech_jp
PRO
6
3.8k
Google Cloud Next '24 Recap(Cloud Run/k8s)
mokocm
0
240
開発生産性大幅アップ!Postman VS Code拡張機能
nagix
2
390
JAWS-UG Bedrock Claude Night
yamahiro
3
610
AWSに詳しくない人でも始められるコスト最適化ガイド
yuhta28
1
250
Featured
See All Featured
Robots, Beer and Maslow
schacon
PRO
155
7.9k
Principles of Awesome APIs and How to Build Them.
keavy
121
16k
Why Our Code Smells
bkeepers
PRO
331
56k
How to name files
jennybc
65
93k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
21
1.6k
Creatively Recalculating Your Daily Design Routine
revolveconf
210
11k
Writing Fast Ruby
sferik
621
60k
Raft: Consensus for Rubyists
vanstee
132
6.3k
Product Roadmaps are Hard
iamctodd
44
9.7k
What's in a price? How to price your products and services
michaelherold
237
11k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
244
20k
No one is an island. Learnings from fostering a developers community.
thoeni
16
2.1k
Transcript
APIS
the holy steer of Memphis Apis Memphis X Not
Application Programming Interfaces
Me • Ruby/iOS/JS since 2008 • Senior Developer at eSpark
• Previously: Wunderlist, Facebook marketing, healthcare IT
None
None
APIs are important
API design makes a difference ?
Case Study
None
None
Yippie
None
None
None
???
None
None
Yippie
None
None
None
None
None
??? ??? ??? ??? ??? ??? ??? ???
None
None
WAT
Why?
Thing is... • The FB API is actually quite well
designed • Strong fundamental pattern • Not amateurs
What went wrong?
APIs are Interfaces
Principle of Least Surprise http://en.wikipedia.org/wiki/Principle_of_least_astonishment "People are part of the
system. The design should match the user's experience, expectations, and mental models." What is least surprising may however depend on the expected audience, e.g. end users, programmers or system administrators.
Developers are our users
None
None
None
None
Avoid Inconsistency
Consistency is key • Consistent format • Consistent naming •
Consistent function
Perspective • Put yourself in another developer's shoes • Even
for an internal API • Extra effort, but it pays off over time
Consideration • Make decisions about your API early on •
Or right now! • Define how it should behave
Building an SDK • Consuming your own API is the
best test • Can you build simple, consistent methods?
def set_app_restrictions(new_settings) graph_call(app_id, { restrictions: new_settings.to_json }) end
def set_app_restrictions(new_settings) if new_settings[“age_distribution”] new_settings[“age_distribution”] = new_settings[“age_restrictions”].to_json end graph_call(app_id, {
restrictions: new_settings.to_json }) end
Thanks! Questions? @arsduo