Jedną z najlepszych praktyk pisania aplikacji RESTFul api jest dodanie wersji. na przykład:Implementacja REST Api przy użyciu Spring
http://my-server/api/v1/getData
http://my-server/api/v2/getData
Nasza aplikacja udostępnia REST api przy użyciu frameworka Spring. Oznaczamy klasę jako kontroler, używamy adnotacji RequestMapping do mapowania adresu URL do funkcji i dodawania obiektów, które są tłumaczone na/z obiektów json.
Na przykład:
@RequestMapping(method = RequestMethod.POST, value = "/api/v1/getData")
public @ResponseBody ResponseDataDTO getData(@RequestBody OperationsDetailsTDO details) {...}
Teraz chcemy zapewnić drugą wersję API. Około 2/3 funkcji pozostaje bez zmian, a 1/3 się zmienia. Zmiany są zarówno w logice, jak i obiektach JSON.
Zastanawiam się, jak zaprojektować kod. Myślę, że ten rodzaj kodu jest trudna do zarządzania:
@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();
}
}
To będzie trudne do zarządzania, ponieważ w każdej funkcji nie będzie inaczej rozgałęzienia. Aby zademonstrować problem, jeśli mam automatyczne narzędzie, które generuje dokumentację, nie będzie w stanie zrozumieć, czym jest API.
Po drugie, zastanawiam się, co powinienem zrobić z klasami związanymi z obiektem JSON. Czy muszę zduplikować wszystkie te klasy, aby wprowadzić drobne zmiany?
Thx.
Powiązane http://stackoverflow.com/questions/389169/best-practices-for-api-versioning – andyb
W końcu to inne API. Będziesz musiał zmienić wszystko, co z niego korzysta. –