~/talk

Give it a REST - Tips for designing and consuming public API's

Talkat NDC Oslo 2018 · 2018-06-11..06-15· [web-platform, microservices]
slides:none on file

Huddle spends five years evolving a public HTTP API to support microservices, async work and clients on web, iOS, Android, Windows and OS X. Concrete patterns include a progress endpoint (POST → 202 with a status URI), BFF (backend-for-frontends) facades (Python/Node) to preserve old contracts, rate limiting with 429 + Retry-After, graceful deprecation with six months notice, and caching via last-modified/304 and ETags. Real failures: a BFF over-emits Last-Modified causing an iOS client to make 21 calls, and a desktop app crashes from deserializing an unexpected personal-website URI; mitigations include stricter headers, child “mini‑put” resources, and server-side ping/pong checks.

AI-written summary · about

  1. 0:00Intro
  2. 2:30Is that really REST?
  3. 6:13Anatomy of a REST request
  4. 7:57Anatomy of a REST response
  5. 10:07API design - where do you start?
  6. 12:10An API is a contract
  7. 14:08Versioning an API
  8. 15:31Extending an API
  9. 17:51How do we introduce breaking changes?
  10. 19:33Elegant deprecation
  11. 21:56BFF - for compatibility and tailoring
  12. 24:17Using links to construct a user interface
  13. 25:23Hypermedia UI (consumer/publisher)
  14. 27:33Caching - 304 Not Modified
  15. 30:05Last-Modified header (producer)
  16. 31:40Rate limiting - 429 Too Many Requests
  17. 33:43Async and REST
  18. 38:48Updating FileRequest status
  19. 40:41Over consuming (consumer)
  20. 43:01Enumerated values (consumer)
  21. 44:30Relying on link order (consumer)
  22. 45:45Be specific (consumer)
  23. 48:24Resources
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.