For obvious compatibility reasons, the over-the-wire protocol needs to be
versioned. Since we're using HTTP, it makes sense to simply version the
URLs used.
The scheme is pretty simple:
http://host:port/operation/version(/extra)?
where "version" is a simple integer.
Open questions:
- Are there operations where we don't want to require a version?
- Is there a use for a "300 Multiple Choices" HTTP return code?
- If we always try the client-optimal version first and then back off
linearly, we'll want to cache the version that succeeded so we don't
spend all of our time trying versions that don't exist.
- Alternatively, we can call "versions" to find out what versions the
server supports for each operation, and cache that.