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 -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
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 <rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> 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 > -- > Posted via http://www.ruby-forum.com/. > > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
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-- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---