X-protocol-version: 3
That way you don't need to pollute the address space. X-protocol-version: 3
That way you don't need to pollute the address space.I had to take packet snippers to XML appliances :-/
API versioning is a good thing, and the best way to choose a version is via a parameter. Don't ever ever try to to encode the version into the security token you return to the clients; someone did that for succinctness, so that you could choose a version once upon connection establishment. It was a nightmare to debug looking at the logs.
With API design, your good design decisions will be taken for granted, and your bad ones will me immortalized in a mountain carving. Try to model it after some existing API that offers a similar functionality, or use an extensible design like the SugarCRM SOAP API, or Zuora's SQL-like one.
E.g. if you are programming GData client, it suggest you to add version info (i.e. GData-Version: X.0 ) in the request header.
http://code.google.com/intl/zh-TW/apis/gdata/docs/developers...
I once saw a significant uptick in users being unable to use an AJAX application because a developer "fixed" the RPC stuff to sent Content-Type: application/json headers instead of claiming to be text/html.
If I use the latest version it is likely developers will simple leave the header out since it "Just Works" without it.
Then when I make a breaking change to the latest API those applications will get screwed. Yes its mostly their fault -- but its my problem.
/api/getstuff?v=1.1&arg1=x&arg2=y
If the version isn't there just return a useful error.
The only downside to this is that it's slightly more difficult to do analytics on the URL requests coming in.
You can't believe how many time I have had problems with an API just to discover the 3 year old client library was using some "sensible defaults" for required arguments.
This is how Google handle it and I think it make sense. http://code.google.com/intl/zh-TW/apis/gdata/docs/developers...