Download - CONSUMING REST APIS - sddconf.com
![Page 1: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/1.jpg)
CONSUMING REST
APISFOR ALL INTERPRETATIONS OF REST
@darrel_miller
![Page 2: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/2.jpg)
![Page 3: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/3.jpg)
Non Authoritative
![Page 4: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/4.jpg)
TODAY’S MENU
API Economy
Client SDKs
Appetizers
Main Course
Dessert
Interpretations of REST
Change is inevitable and good
Code reuse on the web
The secret of REST clients
Samples and Libraries to explore
![Page 5: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/5.jpg)
API ECONOMY
![Page 6: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/6.jpg)
HIDING THE GOODNESS
![Page 7: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/7.jpg)
CONTROL IS CRITICAL
![Page 8: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/8.jpg)
QUALITY + QUANTITY = $$$
![Page 9: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/9.jpg)
DON’T ASSUME THE PROVIDED SDK IS THE BEST OPTION
CHEF’S SUGGESTION
UNDERSTAND YOUR DEPLOYMENT CONSTRAINTS
![Page 10: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/10.jpg)
WHAT DO YOU MEAN BY REST?
![Page 11: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/11.jpg)
DESIRED EFFECT?
![Page 12: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/12.jpg)
DESIRED EFFECT?
Client/Server
Stateless
Caching
Uniform Interface
Layered
Code On Demand
Scalable
Evolvable
Fault Tolerant
Composable
![Page 13: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/13.jpg)
JSON-REST TASTES GREAT…
![Page 14: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/14.jpg)
ADD SOME HYPERMEDIA
![Page 15: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/15.jpg)
APIS DONE OUR WAY
application/vnd.github.v3+json
application/vnd.heroku+json; version=3
![Page 16: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/16.jpg)
GENERIC HYPERMEDIA
![Page 17: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/17.jpg)
UNDERSTAND THE PURPOSE OF MEDIA TYPES
CHEF’S SUGGESTION
BE AWARE OF THE EFFECTS OF YOUR DESIGN CHOICES
![Page 18: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/18.jpg)
DATA ORIENTED APIS
![Page 19: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/19.jpg)
SCENARIO BASED APIS
![Page 20: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/20.jpg)
HYPERMEDIA DRIVEN RITUALS
![Page 21: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/21.jpg)
DATA ORIENTED APIS ARE GREAT FOR QUICK, EASY AND INTERNAL
OR GOVERNMENT DATA
CHEF’S SUGGESTION
SCENARIO ORIENTED IF YOU WANT TO MAKE MONEY
![Page 22: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/22.jpg)
CHANGE IS GOOD
![Page 23: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/23.jpg)
START SMALL, EVOLVE QUICKLY
![Page 24: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/24.jpg)
START SMALL, EVOLVE QUICKLY
![Page 25: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/25.jpg)
START SMALL, EVOLVE QUICKLY
![Page 26: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/26.jpg)
VERSIONING HURTS
![Page 27: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/27.jpg)
A LITTLE PARANOIA CAN BE USEFUL
![Page 28: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/28.jpg)
CHANGE IS GOOD
CHEF’S SUGGESTION
USE VERSIONS AS A LAST RESORT
![Page 29: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/29.jpg)
SOFTWARE’S HOLY GRAIL
Achieving reuse on the web is different…
![Page 30: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/30.jpg)
API REUSE VERSUS WEB REUSE
![Page 31: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/31.jpg)
IGNORANCE IS BLISS
![Page 32: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/32.jpg)
REUSABLE COMPONENTS
![Page 33: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/33.jpg)
MAYBE ONE DAY…
![Page 34: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/34.jpg)
BEWARE MEDIA TYPE EXPLOSION
![Page 35: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/35.jpg)
SUPPORT MULTIPLE MEDIA TYPES
![Page 36: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/36.jpg)
TYPED LINKS
![Page 37: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/37.jpg)
CONSIDER HYPERMEDIA TO ENABLE CLIENT CODE REUSE
CHEF’S SUGGESTION
UNDERSTAND THE CONTRACTS YOU ARE USING
![Page 38: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/38.jpg)
THE SECRET OF REST CLIENTS
Client code dictates
coupling
![Page 39: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/39.jpg)
BREAKING REQUEST FROM RESPONSE
Create Request
Process Request
Handle
Response
![Page 40: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/40.jpg)
CENTRALIZED RESPONSE HANDLING
Create Request
Process Request
HTTP Response
Machine
![Page 41: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/41.jpg)
CONTEXT IS KING
Process Request
HTTP Response
MachineDispatch on :
Status Code
Media Type
Link Relation Type
![Page 42: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/42.jpg)
CLIENT STATE MANAGEMENT
![Page 43: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/43.jpg)
CLIENT STATE MANAGEMENT
Create Request
Process Request
HTTP Response
Machine
Client State
Model
Client View
Application
Controller
![Page 44: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/44.jpg)
BREAKING REQUEST/RESPONSE COUPLING BRINGS FLEXIBILITY
CHEF’S SUGGESTION
LINK RELATION TYPES ARE YOUR FRIEND
APPLY RESPONSES TO TRANSFORM CLIENT STATE
![Page 45: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/45.jpg)
Using Hypermedia to avoid the app store –
https://www.youtube.com/watch?v=LbSM8U21YkM
Crafting Evolvable API Representations –
https://vimeo.com/131643022
Succeeding In Failing –
https://vimeo.com/131632607
RELATED TALKS
![Page 46: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/46.jpg)
LIBRARIES
http://github.com/tavis-software
Tavis.UriTemplates
Tavis.Link
Tavis.Home
Tavis.Problem
Tavis.JsonPatch
Tavis.HttpCache
Tavis.Auth
Tavis.JsonPointer
Tavis.Hal
Tavis.Status
http://hapikit.github.io
Hapikit.net
Hapikit.py
Hapikit.go
…
Tooling for building
better HTTP API Client
Libraries
![Page 47: CONSUMING REST APIS - sddconf.com](https://reader034.vdocuments.us/reader034/viewer/2022051420/627e5220fc5c6b2bd918d6a2/html5/thumbnails/47.jpg)
SAMPLES
https://github.com/Runscope/dotnet-webpack
https://github.com/hapikit/github.net.hapikit
https://github.com/darrelmiller/ForceLinksForNet
https://github.com/hapikit/stormpath.net.hapikit
https://github.com/hapikit/haveibeenpwnd.net.hapikit