This chapter covers:
- Designing evolutions to avoid breaking changes
- Versioning APIs to manage unavoidable breaking changes
- Designing APIs from the ground up to limit breaking changes and facilitate extensibility
In the previous chapters, you have learned how to design APIs that provide features or goals that make sense for their users. You have also learned how to design user-friendly and secure representations of these goals. Once all that work is done, is that the end of the API designer’s job? Not at all! It’s a new beginning. An API is a living thing that will inevitably evolve, perhaps to provide new features or enhancements to existing ones. To design such evolutions, you can reuse the same skills you have learned up to this point — but designing evolutions requires some extra care.