openPR Recherche & Suche
Presseinformation

API Versioning mit Ruby on Rails: Welche Edelsteine sind die Besten?

29.01.201814:52 UhrIT, New Media & Software
Bild: API Versioning mit Ruby on Rails: Welche Edelsteine sind die Besten?

(openPR) API Versioning mit Ruby on Rails: Welche Edelsteine sind die Besten?

Die API-Versionierung hilft, das Verhalten einer API für verschiedene Clients zu ändern. Eine API-Version wird von einer eingehenden Clientanforderung bestimmt und basiert entweder auf der Anforderungs-URL oder auf den Anforderungsheadern. Es gibt eine Reihe gültiger Ansätze für die Versionierung.



Wann ist die API-Versionierung erforderlich?

Die API-Versionierung kann in bestimmten Fällen ignoriert werden, z. B. wenn eine API als interner Client fungiert oder wenn eine API, die Sie bereits verwendet haben, einige kleinere Änderungen erfährt (z. B. Hinzufügen neuer Felder oder neuer Daten zur Antwort).

Wenn Sie jedoch einige wichtige Änderungen an Ihrem Code oder an der Geschäftslogik Ihrer App vornehmen und diese Änderungen sich auf vorhandene Clients auswirken, ist die API-Versionierung die einzige Möglichkeit, alte Clients nicht zu beschädigen.

Wie kann eine API-Version vom Client angegeben werden?
Hier ist eine Liste von Orten, an denen API-Versionen allgemein angegeben sind:

1. URL-Pfadparameter:

Die API-Version wird in den URL-Pfad eingefügt

HTTP GET:

https://domain.com/api/v2/resources

2. URL Get Parameter oder Anfrage body Parameter
HTTP GET:

https://domain.com/api/resources?version=v2

3. Akzeptieren Sie Header als versionierten Medientyp

HTTP GET:

https: // domain / api / bücher

Akzeptieren:

application / vnd.your_app_name.v2 + json

4. Benutzerdefinierter Header

HTTP GET:

https: // domain / api / bücher

API-VERSION: 2

Es gibt eine anhaltende Debatte darüber, wie man eine API-Version richtig spezifiziert.

URLs gelten nicht als ideal für diese Aufgabe, da sie eine Ressource, aber nicht die Version dieser Ressource darstellen. Dies ist jedoch der einfachste Ansatz und eignet sich zum Testen.

Ein benutzerdefinierter Header wird als übermäßig angesehen, da die HTTP-Spezifikation bereits den Accept-Header besitzt, der denselben Zweck erfüllt.

Die Header-API-Versionierung akzeptiert die beste Option gemäß der HTTP-Spezifikation. Es ist jedoch nicht einfach, solche APIs im Vergleich zu anderen Ansätzen zu testen. Da es nicht ausreicht, eine API-URL zu öffnen, müssen Sie eine Anfrage mit korrekten Headern verfassen.

Wenn es darum geht, welche Version einer API es zu wählen gilt, stimmen die meisten Entwickler der Verwendung der ersten API-Version als Standard zu. Wenn Ihr API-Client (iOS / Android-Gerät, Webbrowser usw.) keine erforderliche API-Version angibt, muss Ihre API die allererste Version der Antwort zurückgeben, da die einzige sichere Annahme ist, dass dieser Client zuvor erstellt wurde Die API hatte überhaupt eine Versionierung.

API Versionierung mit Ruby on Rails
Rails hat eine große Menge an Edelsteinen zum Erstellen von APIs mit Versionierung. Sehen wir uns ihre Fähigkeiten im Detail an.

Versionist
Dieses Schmuckstück unterstützt drei Versionierungsstrategien: HTTP-Header, URL-Pfad und Anforderungsparameter. Routen, Controller, Presenter / Serializer, Tests und Dokumentation sind Namensräume. Dies isoliert den Code einer API-Version von einem anderen. Dies kann übertrieben erscheinen, da die meisten Änderungen in Ansichten oder Serialisierern vorgenommen werden. Aber es ist korrekter, da das Isolieren von Logik innerhalb von Namespaces ein sauberer und offensichtlicherer Ansatz ist als der Umgang mit einer Mischung verschiedener Versionen innerhalb eines Controllers.

Um Routineaufgaben zu automatisieren, bietet versionist Rails-Generatoren zum Generieren neuer Versionen Ihrer API sowie neuer Komponenten innerhalb einer bestehenden Version. Es stellt auch einen Rails-Generator bereit, der eine vorhandene API-Version in eine neue API-Version kopiert. Dies funktioniert jedoch nicht gemäß dem DRY-Ansatz, da dies zu einer Code-Duplizierung führt. Ich habe diese Generatoren noch nie benutzt. Normalerweise erstelle ich alle benötigten Controller und Serialisierer manuell. Ich kopiere auch nicht den gesamten Code von der vorherigen Version; Ich erben nur von der vorherigen Versionskontrolle.

Ein wesentlicher Nachteil des Versions-Edelsteins ist, dass der von ihm bereitgestellte API-Versions-Mechanismus keine Rückfälle auf die vorherige Version unterstützt, wenn die angegebene Logik nicht in die neue Version kopiert wurde. Das Juwel erwartet, dass der gesamte erforderliche Code in jeder neuen Version dupliziert wird. Aber wenn Sie nur ein Antwortformat ändern müssen, scheint dies übertrieben. Dieses Juwel ist aber immer noch ziemlich gut. Es ist leicht und konzentriert sich nur auf die API-Versionierung. Das ist im Vergleich zu einigen Edelsteinen, die bestimmte Methoden der API-Versionierung diktieren (z. B. rocket_pants und versioncake), nett.

Hier sehen Sie ein Beispiel für versionierte Routen aus dem Versionist-Juwel, das den Accept-Header mit dem versionierten Medientyp verwendet:
Namensraum: versionist_api do

api_version (

Header: {

Name: "Akzeptieren",

Wert: 'application / vnd.versionist_api.v2 + json'

},

Modul: "V2",

Standardwerte: {format:: json}

) machen

Ressourcen: nur Bücher: [: index,: create,: show,: update,: destroy]

Ende



api_version (

Header: {

Name: 'Akzeptieren',

Wert: 'application / vnd.versionist_api.v1 + json'

},

Modul: 'V1',

Standard: Wahr,

Standardwerte: {format:: json}

) machen



Ressourcen: nur Bücher: [: index,: create,: show,: update,: destroy]

Ende

Ende

Versionskuchen
Dieses Juwel hat einen anderen Ansatz. In den meisten Fällen erfolgt die Versionierung für API-Ansichten und Controller sind nicht Namespaced. Eine nette Eigenschaft von Versioncake ist, dass es Rückfälle zu früheren Versionen hat. Zusammen mit path, query param, accept header und custom header bietet es auch die Möglichkeit, einen eigenen Versionierungsansatz zu erstellen, der ein Anforderungsobjekt akzeptiert. Auf diese Weise können Entwickler eine API-Version an jeder beliebigen Stelle in der Anforderung in einer beliebigen Form angeben.

Da versioncake keinen Controller für jede Version unterstützt, verfügt es über spezielle Methoden, um auf die angeforderte Version und die neueste Version innerhalb der Instanz des Controllers zuzugreifen. Dies kann jedoch dazu führen, dass ein unerfahrener Entwickler schlechten Code schreibt, wenn er innerhalb von Controllern eine bedingte Logik hat, die von diesen Versionsparametern abhängt. In diesem Fall ist es besser, das Factory-Muster zu verwenden, bei dem die Controller-Aktion als einzelnes Objekt für jede Version implementiert wird (das interactor-Juwel kann für diesen Zweck verwendet werden).

Versioncake verfügt über eine Vielzahl von Funktionen (Details finden Sie in der Vergleichstabelle), einschließlich einiger exotischer Funktionen wie der Versionsabwertung. In einer Hinsicht sieht es wie eine vollständige Lösung für die API-Versionierung aus; aber in einem anderen scheint es ein bisschen schwer, da einige seiner zusätzlichen Funktionen möglicherweise nicht in generischen API-Anwendungsfällen verwendet werden.

Ein weiterer Nachteil von Versioncake ist, dass es sichtorientiert ist. Edelsteine wie jbuilder und rabl können mit versioncake verwendet werden, da ihre Vorlagen als Ansichten gespeichert werden. Aber modernere und populärere Edelsteine wie active_model_serializers können nicht mit versioncake verwendet werden. Dies kann in Ordnung sein, wenn Sie es vorziehen, einige Ansichtsteile als Teilbereiche zu verwenden (z. B. wenn Felder von Version 1 in einer Antwort der Version 2 vorhanden sind); Mit active_model_serializers können Sie die normale Vererbung von Ruby-Klassen verwenden.
Traube
Grape ist nicht nur ein API-Versions-Tool. Es ist ein REST-ähnliches API-Framework. Grape wurde entwickelt, um auf Rack zu laufen oder bestehende Webanwendungsframeworks wie Rails und Sinatra zu ergänzen, indem es eine einfache domänenspezifische Sprache zur Verfügung stellt, um einfach RESTful APIs zu entwickeln.

Was die API-Versionsverwaltung betrifft, bietet traube vier Strategien an: URL-Pfad, Accept-Header (ähnlich dem versionierten Medientyp-Ansatz), Accept-Version-Header und Request-Parameter.

Es ist auch möglich, Rückfälle zu früheren Versionen zu haben, die die spezifische Codeorganisation verwenden, die hier beschrieben wird: http://code.dblock.org/2013/07/19/evolving-apis-using-grape-api-versioning.htmlHier ist ein kurzes Beispiel von API Versioning Fallbacks in Trauben:

Und hier ist ein Modul für die Standardkonfiguration der ersten Version:

Modul GrapeApi

Modul V1

Modul Defaults

Erweitern Sie ActiveSupport :: Concern



enthalten tun

# Dies würde die erste API-Version auf die zweite als Fallback reagieren lassen

Version ['v2', 'v1'], unter Verwendung von:: header, vendor: 'grape_api'

# ....

Ende

Ende

Ende

Und die zweite Version:

Modul GrapeApi

Modul V2

Modul Defaults

Erweitern Sie ActiveSupport :: Concern



enthalten tun

# Version "v2", mit:: Pfad

Version 'v2' unter Verwendung von:: header, vendor: 'grape_api'

Ende

Ende

Ende
Bei trave_api / base.rb wird die zweite Version vor der ersten Version installiert. Damit können Anfragen an Version 2 mit V2-Logik (falls vorhanden) bearbeitet werden oder auf Version 1 zurückgreifen.

Modul GrapeApi

Klasse Base

Diese Pressemeldung wurde auf openPR veröffentlicht.

Verantwortlich für diese Pressemeldung:

News-ID: 990619
 261

Kostenlose Online PR für alle

Jetzt Ihren Pressetext mit einem Klick auf openPR veröffentlichen

Jetzt gratis starten

Pressebericht „API Versioning mit Ruby on Rails: Welche Edelsteine sind die Besten?“ bearbeiten oder mit dem "Super-PR-Sparpaket" stark hervorheben, zielgerichtet an Journalisten & Top50 Online-Portale verbreiten:

PM löschen PM ändern
Disclaimer: Für den obigen Pressetext inkl. etwaiger Bilder/ Videos ist ausschließlich der im Text angegebene Kontakt verantwortlich. Der Webseitenanbieter distanziert sich ausdrücklich von den Inhalten Dritter und macht sich diese nicht zu eigen. Wenn Sie die obigen Informationen redaktionell nutzen möchten, so wenden Sie sich bitte an den obigen Pressekontakt. Bei einer Veröffentlichung bitten wir um ein Belegexemplar oder Quellenennung der URL.

Pressemitteilungen KOSTENLOS veröffentlichen und verbreiten mit openPR

Stellen Sie Ihre Medienmitteilung jetzt hier ein!

Jetzt gratis starten

Weitere Mitteilungen von Applaunch

Bild: APP ENTWICKELN LASSEN – ICH BIN ANFÄNGER, WIE GEHT DAS?Bild: APP ENTWICKELN LASSEN – ICH BIN ANFÄNGER, WIE GEHT DAS?
APP ENTWICKELN LASSEN – ICH BIN ANFÄNGER, WIE GEHT DAS?
APP ENTWICKELN LASSEN – ICH BIN ANFÄNGER, WIE GEHT DAS? App Entwickeln lassen – Ich bin Anfänger, wie geht das? App entwicklen lassen – Manchmal hat man einfach eine tolle Idee und dann spinnt man eine solche Idee sogar weiter, weil man einfach immer mehr davon überzeugt ist. Vielleicht erklären einen manche für verrückt, aber das ist erst mal egal, denn wichtig ist, das man an sich selbst glaubt. Irgendwann kommt man aber an den Punkt an dem es konkreter wird und wenn es sich um eine Appidee handelt muss man sich darüber Gedanken machen, wi…
Bild: Application ENTWICKLUNG MÜNCHEN – WAS EINE WEISSWURST MIT APPS ZU TUN HATBild: Application ENTWICKLUNG MÜNCHEN – WAS EINE WEISSWURST MIT APPS ZU TUN HAT
Application ENTWICKLUNG MÜNCHEN – WAS EINE WEISSWURST MIT APPS ZU TUN HAT
Application ENTWICKLUNG MÜNCHEN – WAS EINE WEISSWURST MIT APPS ZU TUN HAT 1. Application Entwicklung München – Wer wir sind Application Entwicklung Agentur - Wir arbeiten Hand in Hand Wir sind im Grunde eine Familie von jungen kreativen Köpfen bite the dust gemeinsam mit unseren Kunden a der besten Lösung für deren Idee arbeiten. Wir hören zu, verstehen bite the dust Anforderungen und achten darauf, dass pass on App Ideen bestmöglich umgesetzt werden. Programmierer und App-Entwickler gibt es da draußen viele, jedoch ist es das persönlic…

Das könnte Sie auch interessieren:

Bild: Ruby on Rails 3.2 lebt weiterBild: Ruby on Rails 3.2 lebt weiter
Ruby on Rails 3.2 lebt weiter
Mit Rails LTS 3.2 (railslts.com) versorgt das Augsburger Ruby-Team makandra Nutzer der offiziell nicht mehr unterstützten Version 3.2 von Ruby on Rails mit Sicherheitsupdates. Rails LTS ist ein kommerzieller Fork von Ruby on Rails, der Entwicklern längere Support-Zeiten für alte Rails-Versionen verspricht. Rails 3.2 befindet sich bereits seit 2014 in …
Rails PRO (beta): Deutschsprachiges Rails-Forum mit Jobbörse
Rails PRO (beta): Deutschsprachiges Rails-Forum mit Jobbörse
Das WebApplication-Framework "Ruby on Rails" erfreut sich auch in Deutschland zunehmender Beliebtheit. Kein Wunder, denn selbst umfangreiche Anwendungen sind mit dem System in Windeseile erstellt. Die Architektur unterstützt dabei die agile Web-Entwicklung und gestattet damit auch tiefgreifendere Änderungen zu späteren Zeitpunkten der Umsetzungsphase. Ruby …
RailsWay – Das weltweit erste Magazin für Ruby on Rails
RailsWay – Das weltweit erste Magazin für Ruby on Rails
Frankfurt/Main, 11.12.2008 – Der Software & Support Verlag veröffentlicht ein neues Magazin zum Thema Ruby on Rails: "RailsWay" Es ist weltweit das erste Magazin, das sich so stark auf das Thema Ruby on Rails fokussiert und erscheint erstmals am 17. Dezember 2008. Es gibt viele Entwicklungen in der Softwareszene, ob im Java-Umfeld, in der PHP-Welt …
Bild: O'Reilly gibt zwei Open Books zum Thema Rails freiBild: O'Reilly gibt zwei Open Books zum Thema Rails frei
O'Reilly gibt zwei Open Books zum Thema Rails frei
… kostenlosen Download zu Verfügung: Rails Kochbuch Das Web-Framework Ruby on Rails hat gezeigt, wie man mit wenig Code hoch professionelle Webseiten kreieren kann. Einige der besten Konzepte und Tricks wurden im "Rails Kochbuch" erstmalig veröffentlicht. Jedes Rails-Rezept enthält eine durchgetestete Lösung, ergänzt um eine genaue Erläuterung, wie und …
Bild: Augsburger Unternehmen versorgt Ruby on Rails mit Support für Rails 3.0Bild: Augsburger Unternehmen versorgt Ruby on Rails mit Support für Rails 3.0
Augsburger Unternehmen versorgt Ruby on Rails mit Support für Rails 3.0
Mit Rails LTS 3.0 (railslts.com) versorgt die Augsburger Softwareschmiede makandra GmbH seit Anfang April 2014 nun auch Nutzer der offiziell nicht mehr unterstützten Version 3.0 von Ruby on Rails mit Sicherheitsupdates. Der weltweit bislang einzige Service für Sicherheits-Updates von veralteten Rails-Versionen fand bereits im vergangenen Jahr breiten …
Bild: Professional Ruby on RailsBild: Professional Ruby on Rails
Professional Ruby on Rails
Mit einem Training, welches nur selten angeboten wird, will die Firma innoQ Deutschland GmbH allen Architekten und Entwicklern, die mehr über das Web-Framework Ruby on Rails lernen möchten, ein Angebot machen. Am 12. und 13. September 2011 findet in Ratingen ein entsprechender, praxisnaher Intensiv-Workshop statt. Die Teilnehmer lernen, wie sie mit Ruby …
Bild: Die internationale Rails-Community kommt wieder nach BerlinBild: Die internationale Rails-Community kommt wieder nach Berlin
Die internationale Rails-Community kommt wieder nach Berlin
Vom 2. bis 4. September findet in Berlin die RailsConf Europe statt. Die Veranstalter Ruby Central und O'Reilly Media haben nun das Programm veröffentlicht. Bis zum 30. Juli läuft zudem ein Frühbucherrabatt, bei dem Interessierte bis zu 150 Euro sparen können. "Die RailsConf Europe findet zum dritten Mal statt, und genau wie Rails selbst hat sich die …
Rails-Community bringt Barcamp auf die Schiene
Rails-Community bringt Barcamp auf die Schiene
Münster. Das Barcamp-Konzept, das seit knapp drei Jahren in der Online-Szene Furore macht, hat mittlerweile auch die Ruby-on-Rails-Gemeinde erfasst: Am letzten Mai-Wochenende trafen sich in den Räumen der Zweitag GmbH in Münster 30 Ruby-on-Rails-Entwickler aus ganz Deutschland zum freien Ideenaustausch. Wie bei Barcamps üblich, bestimmten die Teilnehmer …
Bild: Artikel über makandra’s Aegis-Gem im RailsWay Magazin erschienenBild: Artikel über makandra’s Aegis-Gem im RailsWay Magazin erschienen
Artikel über makandra’s Aegis-Gem im RailsWay Magazin erschienen
Augsburg: „Rollen, Rechte, Ruby“ lautet die Aufmachung der Ausgabe 5/2009 vom RailsWay Magazin - der deutschsprachigen Fachzeitschrift für die moderne Entwicklungsumgebung Ruby on Rails. Unter Webentwicklern hat es sich längst herumgesprochen, dass man mit Ruby on Rails unglaublich einfache und schlanke Lösungen erstellen kann. Wie in den meisten Entwicklungsumgebungen …
Bild: railscomplete.de: makandra startet optimierten Ruby on Rails Hosting-ServiceBild: railscomplete.de: makandra startet optimierten Ruby on Rails Hosting-Service
railscomplete.de: makandra startet optimierten Ruby on Rails Hosting-Service
Vom Startup bis zum Großkonzern – das Webentwicklungsframework Ruby on Rails erfreut sich großer Beliebtheit. Die professionelle Community und eine agile Entwicklungskultur im Umfeld von Ruby on Rails haben sich als Erfolgsrezept für Webanwendungen herumgesprochen. Mit „rails complete“ bieten die Rails-Spezialisten von makandra nun einen Hosting-Service …
Sie lesen gerade: API Versioning mit Ruby on Rails: Welche Edelsteine sind die Besten?