28
A Practical Guide to Hypermedia APIs Eric Oestrich Philly.rb 2013-03-12

A Practical Guide To Hypermedia APIs - Philly.rb

Embed Size (px)

Citation preview

Page 1: A Practical Guide To Hypermedia APIs - Philly.rb

A Practical Guide to Hypermedia APIs

Eric Oestrich

Philly.rb2013-03-12

Page 3: A Practical Guide To Hypermedia APIs - Philly.rb

A Brief Intro to the Domain

Page 5: A Practical Guide To Hypermedia APIs - Philly.rb

Definitely Not Scrabble

Page 6: A Practical Guide To Hypermedia APIs - Philly.rb

Resources

Page 7: A Practical Guide To Hypermedia APIs - Philly.rb

UsersActions:Register

Basic Auth

Page 8: A Practical Guide To Hypermedia APIs - Philly.rb

GamesUsers that are playing on a shared

board

Actions:Create

ListView

Play Move

Page 9: A Practical Guide To Hypermedia APIs - Philly.rb

MoveSet of tiles to be played at a location

Page 10: A Practical Guide To Hypermedia APIs - Philly.rb

TurnsActions:

ListView

Page 12: A Practical Guide To Hypermedia APIs - Philly.rb

Hypermedia Basics

Page 13: A Practical Guide To Hypermedia APIs - Philly.rb

Client Knows Only One URL

"/"

Page 14: A Practical Guide To Hypermedia APIs - Philly.rb

Media TypesHAL

Page 15: A Practical Guide To Hypermedia APIs - Philly.rb

Example HAL{ "status": "Processing", "_embedded": { "items": [ { "name": "Book", "_links":{ "self": { "href" => "http://example.com/items/1" } } } ] }, "_links": { "self" => { "href" => "http://example.com/orders/1" } }}

Page 16: A Practical Guide To Hypermedia APIs - Philly.rb

Server Side

Page 17: A Practical Guide To Hypermedia APIs - Philly.rb

ControllersRails::Api

Page 18: A Practical Guide To Hypermedia APIs - Philly.rb

ModelsDo not have to be ActiveRecord::Base

Page 19: A Practical Guide To Hypermedia APIs - Philly.rb

ResourcesShould not be all of your models exported

Page 20: A Practical Guide To Hypermedia APIs - Philly.rb

SerializersDisable root

LinksEmbedded resources

Changing serializer representations

Page 21: A Practical Guide To Hypermedia APIs - Philly.rb

Client Side

Page 22: A Practical Guide To Hypermedia APIs - Philly.rb

BasicsFaraday

Basic auth over SSLHandle link traversal

Page 23: A Practical Guide To Hypermedia APIs - Philly.rb

ResourcesData only

Convenience methodsLinks

Page 24: A Practical Guide To Hypermedia APIs - Philly.rb

LoadersPull down data

Only GETs

Page 25: A Practical Guide To Hypermedia APIs - Philly.rb

ServicesVery similar to Loaders

Push data back upPerform actions

POST, PUT