Eine der besten Vorgehensweisen beim Schreiben von RESTFul API-Anwendungen ist das Hinzufügen von Versionsverwaltung. Beispiel:REST Api-Implementierung mit Spring
http://my-server/api/v1/getData
http://my-server/api/v2/getData
Unsere Anwendung macht REST API mit dem Spring-Framework verfügbar. Wir markieren eine Klasse als Controller, verwenden die Annotation "RequestMapping", um URL einer Funktion zuzuordnen, und fügen einige Objekte hinzu, die in/aus JSON-Objekten übersetzt werden.
Zum Beispiel:
@RequestMapping(method = RequestMethod.POST, value = "/api/v1/getData")
public @ResponseBody ResponseDataDTO getData(@RequestBody OperationsDetailsTDO details) {...}
Jetzt wollen wir die zweite Version der API zur Verfügung zu stellen. Etwa 2/3 der Funktionen bleiben gleich und 1/3 ändern sich. Die Änderungen betreffen sowohl die Logik als auch die JSON-Objekte.
Ich frage mich, wie man den Code entwirft. Ich denke, dass diese Art von Code ist schwer zu verwalten:
@RequestMapping(method = RequestMethod.POST, value = "/api/{version-var}/getData")
public @ResponseBody ResponseDataDTO createReleaseFromTemplate(@PathVariable("version-var") Integer version, @RequestBody OperationsDetailsTDO details) {
if (version == 1)
{
doForVersion1();
}
else if (version == 2)
{
doForVersion2();
}
}
Es wird schwer sein, zu verwalten, da es in jeder Funktion unterschiedliche Verzweigung sein. Nur um das Problem zu demonstrieren, wenn ich ein automatisches Tool habe, das Dokumentation generiert - es wird nicht verstehen können, was die API ist.
Zweitens frage ich mich, was ich mit den Klassen tun soll, die an JSON-Objekt gebunden sind. Muss ich alle diese Klassen für kleine Änderungen duplizieren?
Thx.
In Verbindung stehende http://stackoverflow.com/questions/389169/best-practices-for-api-versioning – andyb
Es ist eine andere API schließlich. Sie müssen alles ändern, das es verwendet. –