Versioning des services RESTful?
J'ai un service web RESTful déployé à http://example.com/v1/SomeResource. Un jour, une nouvelle version du protocole (qui n'est pas rétro-compatible) est déployé à http://example.com/v2/SomeResource. À partir du client de vue, cette mise à niveau peut se produire à tout moment entre deux requêtes HTTP.
Comment le serveur d'indiquer au client qu'il ne prend plus en charge v1 appels et le client est tenu de mettre à niveau vers la v2? Est-il une réponse appropriée code que je peux utiliser?
Je tiens à fournir au client les informations suivantes:
- Une incompatibilité de mise à niveau a eu lieu. Il n'y a aucun moyen pour le client d'utiliser le nouveau service, parce que le protocole pourrait être totalement différente.
- L'URL du nouveau logiciel client.
- Un message expliquant aux utilisateurs qu'ils doivent mettre à niveau.
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Meilleure pratique:
Il est probablement préférable de garder la gestion des versions de l'URL et de faire de nouvelles ressources vers l'arrière compatible avec les anciennes.
Compatible:
Si vous devez garder la v1 dans l'URL, et font v2 Url, vous devez décider si vous voulez prendre en charge les deux formats, ou de faire le vieux v1 obsolètes. Si vous décidez de faire du vieux v1 obsolètes, alors je vous recommande de retourner 303 ou 401 pour toute personne qui demande une v1 URL.
Faire des anciennes Url obsolète:
Je vous conseille d'utiliser 303 Voir d'Autres. Ou si il n'y a pas de redirection, puis utilisez 410 Gone.
Source
Document tout:
La principale chose à être préoccupé par tout ce que vous avez choisi pour revenir, simplement le document dans votre documentation. À vous de décider comment vous voulez que votre service pour travailler, d'autres qui veulent consommer de la documentation.
Je vous recommande l'article suivant de Peter Williams
Je pense que vous ne devriez pas le faire, en premier lieu, mais sans doute il est trop tard.
De l'article Les services Web RESTful: Les bases.
Je conseille d'utiliser plutôt le 301 (301 moved permanently). Lire pourquoi.
Espérons que cela aide,
Bruno Figueiredo