CONSUMING REST APIS - sddconf.com

48
CONSUMING REST APIS FOR ALL INTERPRETATIONS OF REST @darrel_miller

Transcript of CONSUMING REST APIS - sddconf.com

Page 1: CONSUMING REST APIS - sddconf.com

CONSUMING REST

APISFOR ALL INTERPRETATIONS OF REST

@darrel_miller

Page 2: CONSUMING REST APIS - sddconf.com
Page 3: CONSUMING REST APIS - sddconf.com

Non Authoritative

Page 4: CONSUMING REST APIS - sddconf.com

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

API ECONOMY

Page 6: CONSUMING REST APIS - sddconf.com

HIDING THE GOODNESS

Page 7: CONSUMING REST APIS - sddconf.com

CONTROL IS CRITICAL

Page 8: CONSUMING REST APIS - sddconf.com

QUALITY + QUANTITY = $$$

Page 9: CONSUMING REST APIS - sddconf.com

DON’T ASSUME THE PROVIDED SDK IS THE BEST OPTION

CHEF’S SUGGESTION

UNDERSTAND YOUR DEPLOYMENT CONSTRAINTS

Page 10: CONSUMING REST APIS - sddconf.com

WHAT DO YOU MEAN BY REST?

Page 11: CONSUMING REST APIS - sddconf.com

DESIRED EFFECT?

Page 12: CONSUMING REST APIS - sddconf.com

DESIRED EFFECT?

Client/Server

Stateless

Caching

Uniform Interface

Layered

Code On Demand

Scalable

Evolvable

Fault Tolerant

Composable

Page 13: CONSUMING REST APIS - sddconf.com

JSON-REST TASTES GREAT…

Page 14: CONSUMING REST APIS - sddconf.com

ADD SOME HYPERMEDIA

Page 15: CONSUMING REST APIS - sddconf.com

APIS DONE OUR WAY

application/vnd.github.v3+json

application/vnd.heroku+json; version=3

Page 16: CONSUMING REST APIS - sddconf.com

GENERIC HYPERMEDIA

Page 17: CONSUMING REST APIS - sddconf.com

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

DATA ORIENTED APIS

Page 19: CONSUMING REST APIS - sddconf.com

SCENARIO BASED APIS

Page 20: CONSUMING REST APIS - sddconf.com

HYPERMEDIA DRIVEN RITUALS

Page 21: CONSUMING REST APIS - sddconf.com

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

CHANGE IS GOOD

Page 23: CONSUMING REST APIS - sddconf.com

START SMALL, EVOLVE QUICKLY

Page 24: CONSUMING REST APIS - sddconf.com

START SMALL, EVOLVE QUICKLY

Page 25: CONSUMING REST APIS - sddconf.com

START SMALL, EVOLVE QUICKLY

Page 26: CONSUMING REST APIS - sddconf.com

VERSIONING HURTS

Page 27: CONSUMING REST APIS - sddconf.com

A LITTLE PARANOIA CAN BE USEFUL

Page 28: CONSUMING REST APIS - sddconf.com

CHANGE IS GOOD

CHEF’S SUGGESTION

USE VERSIONS AS A LAST RESORT

Page 29: CONSUMING REST APIS - sddconf.com

SOFTWARE’S HOLY GRAIL

Achieving reuse on the web is different…

Page 30: CONSUMING REST APIS - sddconf.com

API REUSE VERSUS WEB REUSE

Page 31: CONSUMING REST APIS - sddconf.com

IGNORANCE IS BLISS

Page 32: CONSUMING REST APIS - sddconf.com

REUSABLE COMPONENTS

Page 33: CONSUMING REST APIS - sddconf.com

MAYBE ONE DAY…

Page 34: CONSUMING REST APIS - sddconf.com

BEWARE MEDIA TYPE EXPLOSION

Page 35: CONSUMING REST APIS - sddconf.com

SUPPORT MULTIPLE MEDIA TYPES

Page 36: CONSUMING REST APIS - sddconf.com

TYPED LINKS

Page 37: CONSUMING REST APIS - sddconf.com

CONSIDER HYPERMEDIA TO ENABLE CLIENT CODE REUSE

CHEF’S SUGGESTION

UNDERSTAND THE CONTRACTS YOU ARE USING

Page 38: CONSUMING REST APIS - sddconf.com

THE SECRET OF REST CLIENTS

Client code dictates

coupling

Page 39: CONSUMING REST APIS - sddconf.com

BREAKING REQUEST FROM RESPONSE

Create Request

Process Request

Handle

Response

Page 40: CONSUMING REST APIS - sddconf.com

CENTRALIZED RESPONSE HANDLING

Create Request

Process Request

HTTP Response

Machine

Page 41: CONSUMING REST APIS - sddconf.com

CONTEXT IS KING

Process Request

HTTP Response

MachineDispatch on :

Status Code

Media Type

Link Relation Type

Page 42: CONSUMING REST APIS - sddconf.com

CLIENT STATE MANAGEMENT

Page 43: CONSUMING REST APIS - sddconf.com

CLIENT STATE MANAGEMENT

Create Request

Process Request

HTTP Response

Machine

Client State

Model

Client View

Application

Controller

Page 44: CONSUMING REST APIS - sddconf.com

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

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

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

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

Page 48: CONSUMING REST APIS - sddconf.com

BON APPETIT

Twitter: @darrel_miller

http://www.bizcoder.com/