Thanks for all the input. I think I will use versions, but keep changes
to a minimum. And just user /v1/ type of syntax. I don't imagine
changes, but I'd like to be able to expand even if others are using old
clients.
Rob Heittman wrote:
We've been using that approach in production for several years (not in
Restlet obviously, but in a REST-style service). If you have clients
on different development cycles, and/or customer-installed clients
that may or may not choose to upgrade -- and we have both -- this
approach gives some breathing room. I don't know that this makes it a
canonically Good Idea. I suspect Jakob Nielsen would hate it.
I think, if one wants to use this approach, any versioned base path
needs to refer to a functionally and conceptually distinct, published
revision of the service's resource space, not necessarily a specific
client or server version. Taking it to an extreme, if one did
something like /service/{clientversion}/{id} where the {clientversion}
could be effectively any valid client release version -- well,
wouldn't this would be kind of ambiguous: is GET /service/1.0.1/rob
the same thing as GET /service/1.0.24b1/rob? How do I know? If I GET
one and PUT the other, is it the same thing or a different thing? Etc.
The best reason to revise such a versioned base path, I feel, would be
because the v1 resource hierarchy needs changing -- maybe you really
need /service/v2/{account}/{username} instead of
/service/v1/{username}. If /service/v1/rob and /service/v2/rob are
just somehow representationally incompatible, before I changed the
base path, I'd have to wonder if there isn't first something that can
be done to make both client and server more resilient about the kinds
of representation data they are willing to transfer.
- Rob
----- Original Message -----
From: "Stanczak Group" <[EMAIL PROTECTED]>
To: [email protected]
Sent: Thursday, August 30, 2007 1:12:59 PM (GMT-0500) America/New_York
Subject: Using version URI?
I saw in some examples the code used a URI such as /users/v1/{id}/user.
I'm guessing that was to allowing support for backwards compatibility
with older clients that you my have made. This seems like a very good
idea, anyone have input on this? Like or dislike this method?
--
Justin Stanczak
Stanczak Group
812-735-3600
"All that is necessary for the triumph of evil is that good men do
nothing."
Edmund Burke
--
Justin Stanczak
Stanczak Group
812-735-3600
"All that is necessary for the triumph of evil is that good men do nothing."
Edmund Burke