Ce que vous appelez des API REST uniques peut être appelé un ensemble particulier de ressources ou de ressources de l' API REST . Vous pouvez également le considérer comme les fonctionnalités de l'API REST . Comme tout type de logiciel, l'ensemble du package est versionné / mis à jour, pas des fonctionnalités ou des ressources uniques.
Votre question aurait un sens dans le contexte où les ressources du package API REST sont modulaires et donc potentiellement développées et versionnées séparément.
Ensuite, pour autant que je vois, les principaux inconvénients de la convention de dénomination du localisateur de ressources que vous proposez sont:
- Pour l' utilisateur de l' API , il en résulterait des localisateurs de ressources beaucoup plus complexes, moins prévisibles, moins mémorables et moins stables.
- Pour le (s) développeur (s) de module , c'est maintenant plus de travail de devoir gérer ce versioning dans leur propre localisateur de ressources.
- Les changements dans les localisateurs de ressources deviennent beaucoup plus fréquents, autant qu'il y a plusieurs modules de mise à jour donc les inconvénients ci-dessus sont exponentiels ...
Lors de la construction d'une API, l'un de vos principaux objectifs est de la rendre facile à utiliser ...
Vous pourriez trouver un meilleur moyen d'introduire un changement de rupture ou même de versionner l'API REST avec peut-être un en-tête HTTP?
Pour en savoir un peu plus sur l'approche des en-têtes HTTP, voir les autres réponses ci-dessous et: https://www.troyhunt.com/your-api-versioning-is-wrong-which-is/
vnd
partie et la+
syntaxe du type: pour indiquer qu'il s'agit d'un sous-type spécifique au fournisseur duapplication/json
type. C'est exactement pour cela que les types de contenu sont conçus. Votre ressource est disponible en plusieurs formats. Vous demandez au client de choisir le format qu'il souhaite. De plus, il n'y a aucune raison pour que les demandes d'API ne puissent pas utiliser la sémantique de mise en cache HTTP standard.L'essentiel est que si vous versionnez chaque point de terminaison séparément, vous devez pouvoir déployer chaque point de terminaison séparément.
Les API ont généralement une seule version car tous les points de terminaison sont dans la même base de code et ont donc des dépendances partagées et sont déployés ensemble.
Si vous ne mettez pas à jour la version lorsque vous effectuez une modification, car "Oh, je suis sûr que ma modification n'affecte pas cela", vous aurez des problèmes lorsque vous faites une erreur.
De plus, vous souhaiterez déployer simultanément les versions v1 et v2 de votre API. Cela se fait normalement en déployant chaque version sur un serveur distinct et en acheminant le trafic en conséquence.
Si vous n'avez pas de version d'API unique, cela devient beaucoup plus complexe.
la source