Forum: Ruby on Rails API versioning strategy

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
E1af86717137575d94bed5d562c6f4f1?d=identicon&s=25 Zac Zheng (zaczheng)
on 2008-12-15 16:48
I am developing a service to be accessed within a browser and via API. I
am not sure what the best practise for API versioning is.

AdWords API split into major version by URI mutilation: /v1, /v2 etc.

My current thoughts are:

Website accessible from www.myservice.com
API accessible from v1.myserviceapi.com This will be a separate instance
with its own mongrels/mod_rails.

Major updates will go under a incremented subdomain,
v2.myserviceapi.com. This will happen infrequently. Perhaps once a year.

Minor updates will be a normal capistrano deploy.

Can anyone please comment on the above? It's much appreciated.

Zac
992f6dd317a9b164e1efc5b674623f38?d=identicon&s=25 Michael Graff (Guest)
on 2008-12-20 12:52
(Received via mailing list)
From what I can tell, your strategy of v1.example.com and
v2.example.com work well.  Another strategy is api.example.com/v1/...
and api.example.com/v2/...

I personally prefer the latter, but it means everything listening on
api.example.com must speak both protocols, or you have to have a fancy
redirector that inspects packets.

--Michael

On Mon, Dec 15, 2008 at 3:48 PM, Zac Zheng
90e7e04c730e1b747288051af34c3bb0?d=identicon&s=25 rp8 -_- (rp8)
on 2008-12-20 19:43
For service apis with end point on the network, it's usually preferred
to keep the end point stable as you don't want to your client apps to
change often when you start versioning. If your new version breaks
compatibility significantly, then it's ok to have a new end point but
otherwise the versioning might be better handled at the message level.
ie, your message may have a header with v=v1, etc.

Regards,

rp8
=======================
http://lun.competo.com/

Zac Zheng wrote:
> I am developing a service to be accessed within a browser and via API. I
> am not sure what the best practise for API versioning is.
>
> AdWords API split into major version by URI mutilation: /v1, /v2 etc.
>
> My current thoughts are:
>
> Website accessible from www.myservice.com
> API accessible from v1.myserviceapi.com This will be a separate instance
> with its own mongrels/mod_rails.
>
> Major updates will go under a incremented subdomain,
> v2.myserviceapi.com. This will happen infrequently. Perhaps once a year.
>
> Minor updates will be a normal capistrano deploy.
>
> Can anyone please comment on the above? It's much appreciated.
>
> Zac
This topic is locked and can not be replied to.