22
Versioning APIs Marcelo Cure

Versioning APIs

Embed Size (px)

Citation preview

Page 1: Versioning APIs

Versioning APIs

Marcelo Cure

Page 2: Versioning APIs

Why do I care?

Page 3: Versioning APIs

Why contracts break?

Page 4: Versioning APIs

Consumers set expectations

Page 5: Versioning APIs

APIs evolve

Page 6: Versioning APIs

Non breaking changes

Page 7: Versioning APIs

Breaking changes

Page 8: Versioning APIs

Breaks consumer :’(

Page 9: Versioning APIs

And now?

Page 10: Versioning APIs

Version it!

Page 11: Versioning APIs

Be cautious● Too many versions;● Complexity;● Bugs;

Page 12: Versioning APIs

How to version my API?

Page 13: Versioning APIs

Version as path/query parameter

https://host/api/v1/bands/1/albuns https://host/api/bands/albuns?version=1 ● Explicit

● Cleaner for consumers● Intrusive

Page 14: Versioning APIs
Page 15: Versioning APIs

Version as a header

Accept: application/json; version=1.0

● Less intrusive● Does not polute URL● No specification for that

Page 16: Versioning APIs
Page 17: Versioning APIs

Take care of your contracts

● It’s your front door● Care about your design● Discuss contract changes, do it cautiously● Test your contracts

Page 18: Versioning APIs

Bad design -> contract break -> versioning

Page 19: Versioning APIs

Don’t have a lot of versions

Page 20: Versioning APIs

You need to get used...

Contracts break, it’s natural

Page 21: Versioning APIs

But not so often

Page 22: Versioning APIs

Thanks