APIs:
The good, the bad, the ugly
@MicheleTitolo
APIs: The good, the bad, the ugly
APIs: The good, the bad, the ugly
What we’ll cover
Documentation
The Good
It exists
Bonus: it’s interactive
I/O Docs
The Bad
Docs aren’t updated
The Ugly
Documentation?
APIs: The good, the bad, the ugly
URLs
The Good
Consistency
/users/22445
/products/3156
/movies/127/times
The Bad
Inconsistency
/users/22445
/reviews/3156
/times/127
Not review or time id’s
The Ugly
“Send GET to /remove to
delete”
APIs: The good, the bad, the ugly
Payloads
The Good
APIs: The good, the bad, the ugly
You have all the data you need
The Bad
Endpoint “id” field
/products id
/products/:id productID
/cart product_id
Yes, this actually happened
Change
We expect certain things
...like image urls having http://
...like dates sent in the same
format
We expect certain things
to not change
The Ugly
JSON containing HTML
APIs: The good, the bad, the ugly
APIs: The good, the bad, the ugly
Unstable
APIs: The good, the bad, the ugly
Authentication
The Good
HTTP Basc Auth over SSL
...when SSL is secure
OAuth
The Bad
OAuth
APIs: The good, the bad, the ugly
The Ugly
APIs: The good, the bad, the ugly
APIs: The good, the bad, the ugly
Authorization
The Good
App requests permissions
The Bad
A single API key
The Ugly
Authorization?
goto fail;
APIs: The good, the bad, the ugly
APIs: The good, the bad, the ugly
Errors
The Good
Error codes
Error message in response
Human readable error
message
The Bad
“There was an error”
APIs: The good, the bad, the ugly
The Ugly
APIs: The good, the bad, the ugly
APIs: The good, the bad, the ugly
APIs: The good, the bad, the ugly
Caching
The Good
Using one of the standards
Cache-Control
If-Modified-Since
etags
The Bad
Manually processing data
The Ugly
Caching
APIs: The good, the bad, the ugly
APIs: The good, the bad, the ugly
In Summary
Consistency
Conventions
Simple
Questions?
@MicheleTitolo
• JSONSchema, RAML, API Blueprint,
• HTTP 1.1 Spec: http://www.w3.org/Protocols/rfc2616/
rfc2616.html
• Charles, Postman
• http://runscope.com, also http://newrelic.com for
backend analytics
• Versioning: http://apiux.com/2013/05/14/api-
versioning/
Q&A Resources

More Related Content

PDF
APIs: The Good, The Bad, The Ugly
PDF
Создание API, которое полюбят разработчики. Глубокое погружение
PDF
Beautiful APIs - SOSE2021 Keynote
PDF
Mobile and API identity – The New Challenges
PPTX
Documenting an API for the First Time? Quick-Start Tips for Your First API Do...
PPTX
3 things your app API is doing WRONG
PDF
Designing your API Server for mobile apps
PDF
API Basics
APIs: The Good, The Bad, The Ugly
Создание API, которое полюбят разработчики. Глубокое погружение
Beautiful APIs - SOSE2021 Keynote
Mobile and API identity – The New Challenges
Documenting an API for the First Time? Quick-Start Tips for Your First API Do...
3 things your app API is doing WRONG
Designing your API Server for mobile apps
API Basics

Similar to APIs: The good, the bad, the ugly (20)

PPTX
Trends in Web APIs Layer 7 API Management Workshop London
PDF
zendframework2 restful
PPTX
RESTful design
PDF
Don't screw it up! How to build durable API
PPTX
Rest WebAPI with OData
KEY
Enter the app era with ruby on rails (rubyday)
PDF
Web Services PHP Tutorial
PPTX
Familiarity Breeds Contempt (Or why all APIs suck, even yours.)
PDF
Enter the app era with ruby on rails
PDF
Consumer centric api design v0.4.0
PPT
Programming With Amazon, Google, And E Bay
PPTX
API Design - When to buck the trend (Webcast)
PPTX
REST Methodologies
PDF
Web REST APIs Design Principles
PDF
Apidays New York 2024 - Build a terrible API for people you hate by Jim Benne...
PDF
API Design & Security in django
PPTX
Webservices: The RESTful Approach
PDF
Crafting Consumable APIs
PDF
12 core technologies you should learn, love, and hate to be a 'real' technocrat
Trends in Web APIs Layer 7 API Management Workshop London
zendframework2 restful
RESTful design
Don't screw it up! How to build durable API
Rest WebAPI with OData
Enter the app era with ruby on rails (rubyday)
Web Services PHP Tutorial
Familiarity Breeds Contempt (Or why all APIs suck, even yours.)
Enter the app era with ruby on rails
Consumer centric api design v0.4.0
Programming With Amazon, Google, And E Bay
API Design - When to buck the trend (Webcast)
REST Methodologies
Web REST APIs Design Principles
Apidays New York 2024 - Build a terrible API for people you hate by Jim Benne...
API Design & Security in django
Webservices: The RESTful Approach
Crafting Consumable APIs
12 core technologies you should learn, love, and hate to be a 'real' technocrat
Ad

More from Michele Titolo (20)

PDF
Writing Design Docs for Wide Audiences
PDF
Beam Me Up: Voyaging into Big Data
PDF
Tackling the Big, Impossible Project
PDF
No Microservice is an Island
PDF
From iOS to Distributed Systems
PDF
More than po: Debugging in LLDB
PDF
APIs for the Mobile World
PDF
Swift Generics in Theory and Practice
PDF
Protocols promised-land-2
PDF
Multitasking
PDF
Making friendly-microservices
PDF
More Than po: Debugging in LLDB @ CocoaConf SJ 2015
PDF
The Worst Code
PDF
More than `po`: Debugging in lldb
PDF
Can't Handle My Scale v2
PDF
Can't Handle My Scale
PDF
Cocoa Design Patterns in Swift
PDF
Mastering the Project File (AltConf)
PDF
APIs: The Ugly
PDF
That's Not My Code!
Writing Design Docs for Wide Audiences
Beam Me Up: Voyaging into Big Data
Tackling the Big, Impossible Project
No Microservice is an Island
From iOS to Distributed Systems
More than po: Debugging in LLDB
APIs for the Mobile World
Swift Generics in Theory and Practice
Protocols promised-land-2
Multitasking
Making friendly-microservices
More Than po: Debugging in LLDB @ CocoaConf SJ 2015
The Worst Code
More than `po`: Debugging in lldb
Can't Handle My Scale v2
Can't Handle My Scale
Cocoa Design Patterns in Swift
Mastering the Project File (AltConf)
APIs: The Ugly
That's Not My Code!
Ad

Recently uploaded (20)

PDF
Practical Indispensable Project Management Tips for Delivering Successful Exp...
PDF
novaPDF Pro 11.9.482 Crack + License Key [Latest 2025]
PDF
Visual explanation of Dijkstra's Algorithm using Python
DOCX
Modern SharePoint Intranet Templates That Boost Employee Engagement in 2025.docx
PPTX
GSA Content Generator Crack (2025 Latest)
DOC
UTEP毕业证学历认证,宾夕法尼亚克拉里恩大学毕业证未毕业
PDF
Wondershare Recoverit Full Crack New Version (Latest 2025)
PPTX
MLforCyber_MLDataSetsandFeatures_Presentation.pptx
PDF
BoxLang Dynamic AWS Lambda - Japan Edition
PPTX
Tech Workshop Escape Room Tech Workshop
PDF
Workplace Software and Skills - OpenStax
PDF
Introduction to Ragic - #1 No Code Tool For Digitalizing Your Business Proces...
PPTX
Cybersecurity: Protecting the Digital World
PPTX
How to Odoo 19 Installation on Ubuntu - CandidRoot
PDF
Top 10 Software Development Trends to Watch in 2025 🚀.pdf
PDF
Guide to Food Delivery App Development.pdf
DOCX
How to Use SharePoint as an ISO-Compliant Document Management System
PDF
Ableton Live Suite for MacOS Crack Full Download (Latest 2025)
PPTX
Python is a high-level, interpreted programming language
PPTX
Cybersecurity-and-Fraud-Protecting-Your-Digital-Life.pptx
Practical Indispensable Project Management Tips for Delivering Successful Exp...
novaPDF Pro 11.9.482 Crack + License Key [Latest 2025]
Visual explanation of Dijkstra's Algorithm using Python
Modern SharePoint Intranet Templates That Boost Employee Engagement in 2025.docx
GSA Content Generator Crack (2025 Latest)
UTEP毕业证学历认证,宾夕法尼亚克拉里恩大学毕业证未毕业
Wondershare Recoverit Full Crack New Version (Latest 2025)
MLforCyber_MLDataSetsandFeatures_Presentation.pptx
BoxLang Dynamic AWS Lambda - Japan Edition
Tech Workshop Escape Room Tech Workshop
Workplace Software and Skills - OpenStax
Introduction to Ragic - #1 No Code Tool For Digitalizing Your Business Proces...
Cybersecurity: Protecting the Digital World
How to Odoo 19 Installation on Ubuntu - CandidRoot
Top 10 Software Development Trends to Watch in 2025 🚀.pdf
Guide to Food Delivery App Development.pdf
How to Use SharePoint as an ISO-Compliant Document Management System
Ableton Live Suite for MacOS Crack Full Download (Latest 2025)
Python is a high-level, interpreted programming language
Cybersecurity-and-Fraud-Protecting-Your-Digital-Life.pptx

APIs: The good, the bad, the ugly