Ich habe eine Anzahl von Versionierungsschemas für REST API ausgewertet (Header, URL, ...). Der bisher zuverlässigste Ansatz scheint die URL-Option zu sein: Sie funktioniert mit Proxies und ist nicht auf obskure Schemas wie dates for versioning angewiesen.Semantische Versionierung von REST apis?
Jetzt, wenn ich mich umschaue, scheint jeder, der den URL-basierten Ansatz verwendet, Versionen wie v1
, v2
und so weiter zu verwenden. Niemand verwendet Nebenversionen oder sogar ein Schema wie semantic versioning.
Dies wirft einige Fragen auf:
- Wann erhöhen Sie die Versionsnummer eines REST-API (für sicher, Sie weiteres Updates zu ihm haben, als in fünf Jahren nur ein einziges Mal)?
- Wenn Sie nur einen Bugfix haben, erhöhen Sie wahrscheinlich nicht die Versionsnummer, aber wie unterscheiden Sie beide Versionen?
- Wenn Sie einen sehr feingranularen Ansatz verwenden, erhalten Sie viele Versionen, die Sie parallel hosten müssen. Wie gehst du damit um?
Mit anderen Worten: Wie ein Unternehmen wie GitHub hat, macht zum Beispiel nur v3
heute (2015), wenn sie sich um im Geschäft sind bereits jetzt 7 Jahre? Bedeutet das, dass sie ihre api nur zweimal geändert haben? Das kann ich kaum glauben.
Irgendwelche Hinweise?
Eigentlich ist das die Hauptversionsnummer. Ich denke, Ressourcenversionierung ist viel wichtiger, aber niemand spricht darüber. – inf3rno
Können Sie etwas weiter erklären, was Sie mit * Ressourcenversionierung * meinen? –
Ofc. Wenn sich eine Ressource ändert, muss sie die Versionsnummer ändern. Wenn ein Client aktualisiert wird, muss er die Versionsnummer der lokal gespeicherten Ressourcendarstellung zusammen mit der Anforderung senden, sodass der Dienst weiß, ob er eine neue Version der Ressource hat oder nicht.Die Leute rufen dieses Etag auf, aber wenn Sie eine Ressource oder eine Antwort mit mehreren Ressourcen haben, können Sie nicht mehrere Etag-Header (afaik) senden, daher müssen Sie die Versionsnummern im Hauptteil senden. – inf3rno