REST versioning


REST version less (content-negotiation)

Using Accept header (you could also use custom headers but Accept header seems better because it already exists in the HTTP protocol. The Accept header is used for choosing the Content-Type.

REST URL versioning

REST message based (Service Stack)

Data versioning.

References

Your API versioning is wrong.
Three ways of doing the same, pick up whatever suits you but version less is the REST way.
Enterprise REST.
URL versioning VS Accept header. If you version your URL you must update client, server and other services linking to your own one. What at the end is the same as non versioning.
How to version REST URIs.
It must always be used the Accept header.
Best practices for API versioning.
Using version less and versioning at the same time.
Proxies and original headers.
What headers are modified by proxies when forwarding.
The Accept header.
The Accept header.
Roy T. Fielding: versioning.
Roy T. Fielding says: do not version your resources if they are not totally different. Same resource, same URL ALWAYS.
Roy T. Fielding: APIs must be hypertext driven.
Roy T. Fielding about what really is an API REST (really difficult to achieve)
Public REST APIs: examples.
Github, VMware, django framework and many others support the Accept header. What means, they are not versioning URLs.
Postel's law.
Be conservative in what you do, be liberal in what you accept from others.

Get Lucky!!!