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

Reply via email to