One issue I see with HTTP header versioning, is that now I have to add the HTTP version header into my routing logic. I already have to take domain, sub-domain, protocol, HTTP-verb, application context, and path into account when considering routing of HTTP requests. When defining my API signature, I would now need to include more than just the URL path and verb, I would need to include the version header value. I can imagine troubleshooting with other engineers.. "wait can you look through the logs and verify the http version header you used for that request."
Also, I really like when one piece of data can serve dual purpose use. In this case, the URL, which is highly visible, contains the version in it. So the one string of data reveals more information to me.
It might feel a bit aimless at first, but he pulls it together about halfway through. By the end makes good, insightful points. Definitely worth the watch.
A lot of the problems related to organization of entities and type description can be solved by using out-of-band type metadata (i.e. GraphQL). It’s not a panacea by any means, and may not be the right fit for many APIs, but I’m surprised it wasn’t mentioned at all, considering that the article is about API design.
Could you please give an example of these property-based entities, or link to an API that follows this approach? I think I understand your suggestion but want to be sure. New endpoints for new semantics seems rock-solid to
me along same lines as content-addressable / immutable build artifacts which I endorse.
[+] [-] jmartrican|6 years ago|reply
Also, I really like when one piece of data can serve dual purpose use. In this case, the URL, which is highly visible, contains the version in it. So the one string of data reveals more information to me.
[+] [-] segmondy|6 years ago|reply
[+] [-] justicezyx|6 years ago|reply
[+] [-] dlkinney|6 years ago|reply
https://www.youtube.com/watch?v=P0a7PwRNLVU
It might feel a bit aimless at first, but he pulls it together about halfway through. By the end makes good, insightful points. Definitely worth the watch.
[+] [-] catlifeonmars|6 years ago|reply
[+] [-] wellpast|6 years ago|reply
Create new endpoint URIs for new semantics.
Use vocabulary-based (property-based) entities and never change word (property) semantics.
Contrary to its unpopularity (or because of?), this “strategy”* is far far simpler to maintain and evolve than is “versioning”.
*I say “strategy” because this is more commonsense: it’s how we do things in the real world anyway.
[+] [-] braindeath|6 years ago|reply
[+] [-] chrisweekly|6 years ago|reply
[+] [-] awkim|6 years ago|reply