![Page 1: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/1.jpg)
API Design MethodologyMike Amundsen,
CA / Layer7@mamund
![Page 2: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/2.jpg)
Introduction
![Page 3: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/3.jpg)
![Page 4: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/4.jpg)
![Page 5: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/5.jpg)
![Page 6: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/6.jpg)
![Page 7: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/7.jpg)
![Page 8: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/8.jpg)
![Page 9: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/9.jpg)
![Page 10: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/10.jpg)
![Page 11: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/11.jpg)
![Page 12: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/12.jpg)
![Page 13: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/13.jpg)
![Page 14: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/14.jpg)
![Page 15: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/15.jpg)
![Page 16: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/16.jpg)
![Page 17: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/17.jpg)
![Page 18: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/18.jpg)
Actually, we have a methodology already...
![Page 19: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/19.jpg)
Design Guidelines
● Craft [good/pretty/usable/stable] URIs
![Page 20: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/20.jpg)
![Page 21: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/21.jpg)
Design Guidelines
● Craft [good/pretty/usable/stable] URIs● Map domain actions to HTTP methods (CRUD)
![Page 22: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/22.jpg)
![Page 23: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/23.jpg)
Design Guidelines
● Craft [good/pretty/usable/stable] URIs● Map domain actions to HTTP methods (CRUD)● Use the proper HTTP Status Codes
![Page 24: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/24.jpg)
![Page 25: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/25.jpg)
Design Guidelines
● Craft [good/pretty/usable/stable] URIs● Map domain actions to HTTP methods (CRUD)● Use the proper HTTP Status Codes● Document serialized objects as HTTP bodies
![Page 26: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/26.jpg)
![Page 27: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/27.jpg)
Design Guidelines
● Craft [good/pretty/usable/stable] URIs● Map domain actions to HTTP methods (CRUD)● Use the proper HTTP Status Codes● Document serialized objects as HTTP bodies● Use HTTP headers responsibly
![Page 28: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/28.jpg)
![Page 29: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/29.jpg)
Design Guidelines
● Craft [good/pretty/usable/stable] URIs● Map domain actions to HTTP methods (CRUD)● Use the proper HTTP Status Codes● Document serialized objects as HTTP bodies● Use HTTP headers responsibly● Describe edge cases (async, errors, authN/Z)
![Page 30: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/30.jpg)
![Page 31: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/31.jpg)
![Page 32: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/32.jpg)
![Page 33: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/33.jpg)
![Page 34: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/34.jpg)
![Page 35: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/35.jpg)
But there's a problem here...
![Page 36: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/36.jpg)
Those are not design guidelines..
![Page 37: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/37.jpg)
They are implementation guidelines!
![Page 38: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/38.jpg)
![Page 39: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/39.jpg)
Ok, so what is a design methodology, then?
![Page 40: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/40.jpg)
![Page 41: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/41.jpg)
![Page 42: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/42.jpg)
Here's a simple seven-step procedure...
![Page 43: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/43.jpg)
Here's a simple seven-step procedure...
![Page 44: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/44.jpg)
Let's design a Maze game API
![Page 45: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/45.jpg)
![Page 46: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/46.jpg)
1. List the Semantic Descriptors
![Page 47: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/47.jpg)
1. List the Semantic Descriptors(the what?)
![Page 48: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/48.jpg)
1. List the Semantic Descriptors(the what?)
You know, the stuff!
![Page 49: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/49.jpg)
1. List the Semantic Descriptors
● A maze● A maze cell● A switch● Switch position ("up" or "down")● The title of a maze cell● A doorway connecting to cells● An exit from the maze● A list of mazes
![Page 50: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/50.jpg)
![Page 51: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/51.jpg)
2. Draw a State Diagram
![Page 52: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/52.jpg)
![Page 53: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/53.jpg)
3. Reconcile Names
![Page 54: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/54.jpg)
3. Reconcile Names
● IANA Link Relation Values● schema.org● microformats● Dublin Core● Activity Streams
![Page 55: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/55.jpg)
3. Reconcile Names
● maze● start● current● exit● north, south, east, west● switch● flip
![Page 56: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/56.jpg)
3. Reconcile Names
● maze● start (IANA)● current (IANA)● exit● north, south, east, west● switch● flip
![Page 57: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/57.jpg)
3. Reconcile Names
● maze● start (IANA)● current (IANA)● exit (microformats)● north, south, east, west (microformats)● switch● flip
![Page 58: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/58.jpg)
3. Reconcile Names
● maze● start (IANA)● current (IANA)● exit (microformats)● north, south, east, west (microformats)● switch● flip edit (IANA)
![Page 59: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/59.jpg)
3. Reconcile Names
● http://mamund.com/rels/maze (RFC5988)● start (IANA)● current (IANA)● exit (microformats)● north, south, east, west (microformats)● http://mamund.com.rels/switch (RFC5988)● flip edit (IANA)
![Page 60: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/60.jpg)
3. Reconcile Names● IANA
○ edit○ start ○ current
● microformats○ exit○ north, south, east, west
● RFC5988○ http://mamund.com/rels/switch ○ http://mamund.com/rels/maze
![Page 61: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/61.jpg)
![Page 62: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/62.jpg)
OK, that was the design part...
![Page 63: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/63.jpg)
But I still need to implement it, right?
![Page 64: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/64.jpg)
4. Choose a Media Type
![Page 65: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/65.jpg)
4. Choose a Media Type
● Use application/json, application/xml● Collection type: Atom, OData, Collection+JSON● Free-form: HTML, Siren, HAL, JSON-LD● Invent your own semantic type
![Page 66: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/66.jpg)
4. Choose a Media Type
● Use application/json, application/xml● Collection type: Atom, OData, Collection+JSON)● Free-form: HTML, Siren, HAL, JSON-LD)● Invent your own semantic type
![Page 67: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/67.jpg)
4. Choose a Media Type
● Use application/json, application/xml● Collection type: Atom, OData, Collection+JSON● Free-form: HTML, Siren, HAL, JSON-LD● Invent your own semantic type
![Page 68: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/68.jpg)
4. Choose a Media Type
● Use application/json, application/xml● Collection type: Atom, OData, Collection+JSON● Free-form: HTML, Siren, HAL, JSON-LD● Invent your own semantic type
![Page 69: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/69.jpg)
4. Choose a Media Type
● Use application/json, application/xml● Collection type: Atom, OData, Collection+JSON● Free-form: HTML, Siren, HAL, JSON-LD● Invent your own semantic type
![Page 70: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/70.jpg)
![Page 71: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/71.jpg)
![Page 72: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/72.jpg)
5. Write a Profile
![Page 73: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/73.jpg)
![Page 74: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/74.jpg)
![Page 75: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/75.jpg)
6. Implementation
![Page 76: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/76.jpg)
6. Implementation
ta-da!
![Page 77: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/77.jpg)
![Page 78: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/78.jpg)
![Page 79: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/79.jpg)
![Page 80: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/80.jpg)
![Page 81: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/81.jpg)
![Page 82: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/82.jpg)
![Page 83: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/83.jpg)
And now we have running code!
![Page 84: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/84.jpg)
Wait, what's step seven?
![Page 85: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/85.jpg)
7. Publication
![Page 86: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/86.jpg)
7. Publication
● Publish your "billboard" URL● Publish your profile● Register new rel values and/or media types● Publish the documentation● Consider "well-known" URIs
![Page 87: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/87.jpg)
Now, you're done!
![Page 88: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/88.jpg)
Seven Simple Steps
1. List the Semantic Descriptors2. Draw a State Diagram3. Reconcile Names4. Write a Profile5. Select a Media Type6. Implementation7. Publication
![Page 89: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/89.jpg)
Some Final Advice
![Page 90: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/90.jpg)
Resources are an implementation detail
![Page 91: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/91.jpg)
![Page 92: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/92.jpg)
Don't fall into the collection trap
![Page 93: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/93.jpg)
![Page 94: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/94.jpg)
Don't start with the representation format
![Page 95: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/95.jpg)
![Page 96: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/96.jpg)
URL design doesn't matter
![Page 97: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/97.jpg)
![Page 98: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/98.jpg)
Standard names are probably better than yours.
![Page 99: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/99.jpg)
![Page 100: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/100.jpg)
Don't keep all the hypermedia in one place
![Page 101: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/101.jpg)
![Page 102: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/102.jpg)
![Page 103: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/103.jpg)
Some Final Advice
● Resources are implementation details● Don't fall into the collection trap● Don't start w/ the representation format● URL design doesn't matter● Standard names are probably better than
yours● Don't keep all the hypermedia in one place
![Page 104: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/104.jpg)
In Conclusion...
![Page 105: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/105.jpg)
![Page 106: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/106.jpg)
![Page 107: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/107.jpg)
![Page 108: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/108.jpg)
![Page 109: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/109.jpg)
![Page 110: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/110.jpg)
In Conclusion...
● Don't confuse implementation w/ design● Design is the hard part (high value)● Implementation is the easy part (high speed)● Avoid common design mistakes● Go out and make lots of APIs!
![Page 111: @mamund CA / Layer7 Mike Amundsen,Some Final Advice Resources are implementation details Don't fall into the collection trap Don't start w/ the representation format URL design doesn't](https://reader034.vdocuments.site/reader034/viewer/2022051912/600280999fe2282d8d5cbe04/html5/thumbnails/111.jpg)
API Design MethodologyMike Amundsen,
CA / Layer7@mamund