designing a hypermedia api with grape & roar

22
Designing a Hypermedia API with {Grape} & Roar Daniel Doubrovkine @dblockdotorg

Upload: daniel-doubrovkine

Post on 14-Jun-2015

506 views

Category:

Technology


0 download

DESCRIPTION

Given at API Craft NYC, http://www.meetup.com/API-Craft-NYC/events/209294892/

TRANSCRIPT

Page 1: Designing a Hypermedia API with Grape & Roar

Designing a Hypermedia API with {Grape} & Roar

Daniel Doubrovkine @dblockdotorg

Page 2: Designing a Hypermedia API with Grape & Roar
Page 3: Designing a Hypermedia API with Grape & Roar

sale JSON

Page 4: Designing a Hypermedia API with Grape & Roar

1K+ cache.delete

Page 5: Designing a Hypermedia API with Grape & Roar
Page 6: Designing a Hypermedia API with Grape & Roar

GET /api/v1/me/follows

{ _type:* }

Page 7: Designing a Hypermedia API with Grape & Roar

GET /api/v1/…

5 years later …

Page 8: Designing a Hypermedia API with Grape & Roar

https://developers.artsy.net

Page 9: Designing a Hypermedia API with Grape & Roar

Adopt a standard …

Page 10: Designing a Hypermedia API with Grape & Roar

JSON+HALJSONAPI

Collection+JSONSIREN

JSON-LD

Page 11: Designing a Hypermedia API with Grape & Roar

1:1 URI:RESOURCEpath?query=string

Page 12: Designing a Hypermedia API with Grape & Roar
Page 13: Designing a Hypermedia API with Grape & Roar

API RootDiscoverable API

Page 14: Designing a Hypermedia API with Grape & Roar

Document

Page 15: Designing a Hypermedia API with Grape & Roar

Collections

typed

Page 16: Designing a Hypermedia API with Grape & Roar

https://github.com/dblock/grape-with-roarImplement it!

https://github.com/dblock/grape-with-roar-walkthrough

Page 17: Designing a Hypermedia API with Grape & Roar

Map 1:1 with Database Fields vs. Relations

Page 18: Designing a Hypermedia API with Grape & Roar

Use Version Headers and Media Types

curl 'http://api.artsy.net/api' -H 'Accept:application/vnd.artsy-v2+json'

Page 19: Designing a Hypermedia API with Grape & Roar

Make it Flat

Page 20: Designing a Hypermedia API with Grape & Roar

Paginate with Offsets, not Pages

Page 21: Designing a Hypermedia API with Grape & Roar

Present Everything, Including Errors

Page 22: Designing a Hypermedia API with Grape & Roar

@dblockdotorg / [email protected] / artsy.net

Thanks!