API Styles

API Course Politecnico di Milano

Erik Wilde , API Academy, CA Technologies
March 28, 2018

Creative Commons License [http://creativecommons.org/licenses/by/3.0/]

This work is licensed under a CC
Attribution 3.0 Unported License
[http://creativecommons.org/licenses/by/3.0/]

Contents Erik Wilde : API Styles

Contents

APIs are Languages

Outline (APIs are Languages)

  1. APIs are Languages [3]
  2. Tunnel Style [1]
  3. URI Style [1]
  4. Hypermedia Style [1]
  5. Query Style [1]
  6. Event-Based Style [2]
  7. Command Query Responsibility Segregation (CQRS) [1]
  8. Choosing an API Style [4]
  9. Conclusions [2]
APIs are Languages Erik Wilde : API Styles

(3) Distributed Problem Solving



APIs are Languages Erik Wilde : API Styles

(4) APIs Interactions are Conversations



APIs are Languages Erik Wilde : API Styles

(5) API Style Metaphors



Tunnel Style

Outline (Tunnel Style)

  1. APIs are Languages [3]
  2. Tunnel Style [1]
  3. URI Style [1]
  4. Hypermedia Style [1]
  5. Query Style [1]
  6. Event-Based Style [2]
  7. Command Query Responsibility Segregation (CQRS) [1]
  8. Choosing an API Style [4]
  9. Conclusions [2]
Tunnel Style Erik Wilde : API Styles

(7) Distributed Programming



URI Style

Outline (URI Style)

  1. APIs are Languages [3]
  2. Tunnel Style [1]
  3. URI Style [1]
  4. Hypermedia Style [1]
  5. Query Style [1]
  6. Event-Based Style [2]
  7. Command Query Responsibility Segregation (CQRS) [1]
  8. Choosing an API Style [4]
  9. Conclusions [2]
URI Style Erik Wilde : API Styles

(9) Identifiers for Resources



Hypermedia Style

Outline (Hypermedia Style)

  1. APIs are Languages [3]
  2. Tunnel Style [1]
  3. URI Style [1]
  4. Hypermedia Style [1]
  5. Query Style [1]
  6. Event-Based Style [2]
  7. Command Query Responsibility Segregation (CQRS) [1]
  8. Choosing an API Style [4]
  9. Conclusions [2]
Hypermedia Style Erik Wilde : API Styles

(11) Webby APIs



Query Style

Outline (Query Style)

  1. APIs are Languages [3]
  2. Tunnel Style [1]
  3. URI Style [1]
  4. Hypermedia Style [1]
  5. Query Style [1]
  6. Event-Based Style [2]
  7. Command Query Responsibility Segregation (CQRS) [1]
  8. Choosing an API Style [4]
  9. Conclusions [2]
Query Style Erik Wilde : API Styles

(13) Querying Structured Data



Event-Based Style

Outline (Event-Based Style)

  1. APIs are Languages [3]
  2. Tunnel Style [1]
  3. URI Style [1]
  4. Hypermedia Style [1]
  5. Query Style [1]
  6. Event-Based Style [2]
  7. Command Query Responsibility Segregation (CQRS) [1]
  8. Choosing an API Style [4]
  9. Conclusions [2]
Event-Based Style Erik Wilde : API Styles

(15) Fire and Forget



Event-Based Style Erik Wilde : API Styles

(16) Event Sourcing: Durable Event Logs



Command Query Responsibility Segregation (CQRS)

Outline (Command Query Responsibility Segregation (CQRS))

  1. APIs are Languages [3]
  2. Tunnel Style [1]
  3. URI Style [1]
  4. Hypermedia Style [1]
  5. Query Style [1]
  6. Event-Based Style [2]
  7. Command Query Responsibility Segregation (CQRS) [1]
  8. Choosing an API Style [4]
  9. Conclusions [2]
Command Query Responsibility Segregation (CQRS) Erik Wilde : API Styles

(18) Separating Read and Write Models



Choosing an API Style

Outline (Choosing an API Style)

  1. APIs are Languages [3]
  2. Tunnel Style [1]
  3. URI Style [1]
  4. Hypermedia Style [1]
  5. Query Style [1]
  6. Event-Based Style [2]
  7. Command Query Responsibility Segregation (CQRS) [1]
  8. Choosing an API Style [4]
  9. Conclusions [2]
Choosing an API Style Erik Wilde : API Styles

(20) API Styles are Tools

Hammer and Screw

Choosing an API Style Erik Wilde : API Styles

(21) API Style Properties



Choosing an API Style Erik Wilde : API Styles

(22) Context Considerations



Choosing an API Style Erik Wilde : API Styles

(23) API Styles in the Wild



Conclusions

Outline (Conclusions)

  1. APIs are Languages [3]
  2. Tunnel Style [1]
  3. URI Style [1]
  4. Hypermedia Style [1]
  5. Query Style [1]
  6. Event-Based Style [2]
  7. Command Query Responsibility Segregation (CQRS) [1]
  8. Choosing an API Style [4]
  9. Conclusions [2]
Conclusions Erik Wilde : API Styles

(25) There is no Style Hammer



Conclusions Erik Wilde : API Styles

(26) Thanks! Q&A

What's Next?

March 28, 2018 API Course Politecnico di Milano