REST beyond the Obvious - API Design for ever Evolving Systems
You need to be signed in to add a collection
Most APIs built today are considered REST APIs, when in fact they merely exchange data via HTTP and JSON. At the same time, systems almost never act autonomously but rather live alongside others. In that context, being able to evolve an API becomes a crucial aspect in its design and the only knee-jerk, but often problematic reaction usually is: versioning. The talk takes a step back and looks at the architectural context APIs live in and outlines the drawbacks that result from ignoring crucial parts of REST. It discusses internal VS. external APIs, whether that distinction is useful in the first place, the impact of Domain-Driven Design and how to design and specify APIs and their clients to optimize for evolvability so that changes in an API don’t break clients. **What will the audience learn from this talk?**<br> The audience will learn about different semantic levels APIs can implement and why most real-world HTTP APIs look the way they do for historic reasons. They will then learn about what "semantically high(er) level" means and how to actually practically implement the increase in semantic abstraction. **Does it feature code examples and/or live coding?**<br> The talk is accompanied by an example project (Java / Spring Boot) that we're going to discuss. **Prerequisite attendee experience level:** <br> [Level 300](https://gotoams.nl/2019/pages/experience-level)
Transcript
Most APIs built today are considered REST APIs, when in fact they merely exchange data via HTTP and JSON. At the same time, systems almost never act autonomously but rather live alongside others. In that context, being able to evolve an API becomes a crucial aspect in its design and the only knee-jerk, but often problematic reaction usually is: versioning.
The talk takes a step back and looks at the architectural context APIs live in and outlines the drawbacks that result from ignoring crucial parts of REST. It discusses internal VS. external APIs, whether that distinction is useful in the first place, the impact of Domain-Driven Design and how to design and specify APIs and their clients to optimize for evolvability so that changes in an API don’t break clients.
What will the audience learn from this talk?
The audience will learn about different semantic levels APIs can implement and why most real-world HTTP APIs look the way they do for historic reasons. They will then learn about what "semantically high(er) level" means and how to actually practically implement the increase in semantic abstraction.
Does it feature code examples and/or live coding?
The talk is accompanied by an example project (Java / Spring Boot) that we're going to discuss.
Prerequisite attendee experience level:
Level 300