A Practical Guide to Hypermedia APIs

25
A Practical Guide to Hypermedia APIs Eric Oestrich @ericoestrich @smartlogicsolutions

Transcript of A Practical Guide to Hypermedia APIs

Page 1: A Practical Guide to Hypermedia APIs

A Practical Guide to Hypermedia APIs

Eric Oestrich@ericoestrich

@smartlogicsolutions

Page 2: A Practical Guide to Hypermedia APIs

woofound.com

Page 3: A Practical Guide to Hypermedia APIs
Page 4: A Practical Guide to Hypermedia APIs

That was this projectPrepare yourself

Page 5: A Practical Guide to Hypermedia APIs

Please note that this has been heavily stripped down

Don't want to give everything away

Page 6: A Practical Guide to Hypermedia APIs

But firstHypermedia Basics

Page 7: A Practical Guide to Hypermedia APIs

Resources != Models

Page 8: A Practical Guide to Hypermedia APIs

HTTP is your friendmethods and status codes

Page 9: A Practical Guide to Hypermedia APIs

Client knows only one URL

"/"

Page 10: A Practical Guide to Hypermedia APIs

Media typesHAL

Page 11: A Practical Guide to Hypermedia APIs

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

Page 12: A Practical Guide to Hypermedia APIs

Server

Page 13: A Practical Guide to Hypermedia APIs

Controllers

● Use respond_to and respond_with

Page 14: A Practical Guide to Hypermedia APIs

Models

● Doesn't have to be a subclass of ActiveRecord::Base

Page 15: A Practical Guide to Hypermedia APIs

Serializers

● Disable root● Links● Embedded resources● Changing serializer representations

Page 16: A Practical Guide to Hypermedia APIs

Client

Page 17: A Practical Guide to Hypermedia APIs

Basics

● Uses Faraday● Basic auth over SSL

Page 18: A Practical Guide to Hypermedia APIs

Resources

● Data only● Convenience methods● Links

Page 19: A Practical Guide to Hypermedia APIs

Loaders

● Pull data down from the API● Only GETs

Page 20: A Practical Guide to Hypermedia APIs

Services

● Very similar to Loaders● Push data back up

Page 21: A Practical Guide to Hypermedia APIs

Integrating with Rails

Page 22: A Practical Guide to Hypermedia APIs

Problems

● There are no ids● Speed

Page 25: A Practical Guide to Hypermedia APIs

HobostoveCampfire for the command line

https://github.com/oestrich/hobostove