Rails kommt mit RESTful-Ressourcen aus der Box, aber verwenden Sie diese für Ihre tatsächliche öffentliche API? Wenn ja, wie würden Sie die Versionierung Ihrer API erreichen, d. H. example.com/api/v2/foo/bar
?Welche Best Practices zum Entwerfen einer RESTful öffentlichen API auf Rails?
Antwort
In der Regel sind APIs für meine Anwendungen tatsächlich auf den gleichen Ressourcen wie die HTML-Schnittstelle aufgebaut. Für einige (nicht für mich) könnte das nur der Code sein, der aus dem Scaffold-Generator kommt - aber unabhängig davon, ob ich ihn benutzerdefiniert schreibe oder den Generator behandeln lasse, gibt es nur sehr wenige Fälle, in denen ich Ressourcen nur dem Programm zur Verfügung stelle API und nicht zur Endbenutzeransicht.
Versionierung war kein Problem für die Anwendungen, die ich bisher gebaut habe, aber ich kann mir zwei Möglichkeiten vorstellen, es zu implementieren.
1) Man könnte hinzufügen, Routen mit dem Präfix ‚v1‘ ‚v2‘ usw., die einen Parameter einstellen, die Sie dann Zugriff auf die Steuerung der Verarbeitung angeben, auftreten:
in Routen. 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 auch ein benutzerdefiniertes Antwortformat Hinzufügen für jede Version betrachten könnten
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
Erstere würden Sie URLs wie example.com/v1/posts.xml und example.com/v2/ posts.xml; Letzteres würde Ihnen URLs wie example.com/posts.v1 und example.com/posts.v2 geben
- 1. Best Practices und Richtlinien zum Entwerfen einer API
- 2. Best Practices zum Entwerfen von Tastenkombinationen
- 3. Best Practices zum Entwerfen der Tabellenansicht für App-Einstellungen?
- 4. Rails Best Practices für RESTful-Controller CREATE- und UPDATE-Methoden
- 5. Welche Best Practices gelten für die Stammseite einer REST-API?
- 6. Rails: Keine Überprüfung einer Methodenkette Best Practices
- 7. Welche Best Practices zum Erstellen meiner eigenen benutzerdefinierten Ausnahme?
- 8. Gibt es Best Practices zum Offenlegen von Ressourcenberechtigungen/ACL für ein Frontend über eine RESTful-API?
- 9. Welche Best Practices gibt es für die Middleware-API?
- 10. Welche Best Practices verwenden Sie zum Testen von Datenbankabfragen?
- 11. Serverseitige Anwendungskonfigurationssicherheit. Best Practices
- 12. Rails Caching DB-Abfragen und Best Practices
- 13. Web-Service mit Rails + MySql Best Practices
- 14. Timeouts in Rails/Nginx - Best Practices
- 15. Best Practices zum Debuggen von Verknüpfungsfehlern
- 16. Facebook Login Best Practices
- 17. IBOutlet Best Practices
- 18. Rails Best Practices, wo unaufdringlich Javascript
- 19. NAnt Best Practices
- 20. Best Practices für API-Hooks/-Rückrufe?
- 21. Best Practice für Fehler in der RESTful-API
- 22. Best Practices zum Testen von MSI-Installationen
- 23. NoSQL-Best Practices
- 24. Entwerfen einer XACML-API
- 25. Best Practices zum Erstellen benutzerdefinierter Anspruchstypen
- 26. Best Practices zum Speichern von UI-Einstellungen?
- 27. Best Practices zum Speichern von Einstellungen
- 28. Best Practices zum Schreiben von JavaScript-Widgets
- 29. Best Practices zum automatischen Speichern von Entwürfen?
- 30. Best Practices zum Signieren von .NET-Assemblys?
Eine andere Option für die Versionierung, wenn die tatsächliche Geschäftslogik anders ist, wäre namespaced Routen zu verwenden. – Kris