with tutorial simple seguridad rails elaborando create crear con apis ruby-on-rails api rest

ruby on rails - tutorial - ¿Cuáles son las mejores prácticas para diseñar una API pública RESTful en Rails?



rails api tutorial (1)

Rails viene con recursos RESTful listos para usar, ¿pero los usa para su API pública real? Si es así, ¿cómo lograrías el control de versiones de tu API, es decir, example.com/api/v2/foo/bar ?


Normalmente, las API para mis aplicaciones se basan en los mismos recursos que componen la interfaz HTML. Para algunos (no para mí), eso podría ser simplemente usar el código que sale del generador de andamios, pero independientemente de si lo escribo de manera personalizada o de que el generador lo maneje, hay muy pocos casos en los que expongo los recursos solo a la programática API y no a la vista del usuario final.

El control de versiones no ha sido un problema para las aplicaciones que he desarrollado hasta ahora, pero puedo pensar en dos formas de implementarlo.

1) Puede agregar rutas con el prefijo ''v1,'' ''v2,'' etc., que establecen un parámetro al que puede acceder en el controlador para especificar que se produzca el procesamiento:

en routes.rb:

map.resources :posts, :path_prefix => ''/:version''

en posts_controller.rb

class PostsController < ApplicationController def index respond_to do |format| format.xml do if params[:version] == ''v1'' # ... else # ... end end end end end

2) También podría considerar agregar un formato de respuesta personalizado para cada versión

en initializers / mime_types.rb

Mime::Type.register_alias "application/xml", :v1 Mime::Type.register_alias "application/xml", :v2

en posts_controller.rb

class PostsController < ApplicationController def index respond_to do |format| format.v1 do # ... end format.v2 do # ... end end end end

El primero le daría URLs como example.com/v1/posts.xml y example.com/v2/posts.xml; el último le daría URLs como example.com/posts.v1 y example.com/posts.v2