Was sind die besten Praktiken ein RESTful öffentlichen API on Rails für die Gestaltung?
-
02-07-2019 - |
Frage
Rails kommt mit RESTful Ressourcen aus der Box, aber verwenden Sie die für Ihre aktuelle öffentliche API? Wenn ja, wie würden Sie erreichen Versionierung Ihrer API heißt example.com/api/v2/foo/bar
?
Lösung
Normalerweise APIs für meine Anwendungen sind in der Tat auf den gleichen Ressourcen aufgebaut, die die HTML-Oberfläche bilden. Für einige (nicht ich), dass könnte nur mit dem Code, der aus dem Gerüst kommt Generator aber unabhängig davon, ob ich es Brauch schreiben oder lassen Sie den Generator damit umgehen, gibt es sehr wenige Fälle, in denen ich Ressourcen nur in dem programmatischen aussetzen API und nicht an den Endverbraucher Ansicht.
Versioning hat ein Problem für die Anwendungen nicht, die ich bisher gebaut habe, aber ich kann auf zwei Arten denken, um es umzusetzen.
1) Sie können Routen hinzufügen mit dem Präfix ‚v1‘, ‚v2‘ usw., die einen Parameter einstellen, die Sie dann Zugriff auf die Steuerung der Verarbeitung angeben, auftreten:
in routes.rb:
map.resources :posts, :path_prefix => '/:version'
in 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) Sie könnten auch erwägen, eine benutzerdefinierte Antwortformat für jede Version Hinzufügen
in initializers / mime_types.rb
Mime::Type.register_alias "application/xml", :v1
Mime::Type.register_alias "application/xml", :v2
in posts_controller.rb
class PostsController < ApplicationController
def index
respond_to do |format|
format.v1 do
# ...
end
format.v2 do
# ...
end
end
end
end
Die ehemalige würden Sie URLs wie example.com/v1/posts.xml und example.com/v2/posts.xml; Letztere würde Ihnen URLs wie example.com/posts.v1 und example.com/posts.v2