19 votes

Code d'état HTTP pour "mise à jour du logiciel client requise" - que faut-il utiliser ?

Quel code d'état HTTP dois-je renvoyer pour indiquer que la mise à jour du logiciel client est nécessaire ? Par exemple, le serveur a modifié le format des données qu'il servait, et les anciens clients ne pourront pas travailler avec cela, donc le client doit être mis à jour pour utiliser les nouvelles données.

Je ne veux pas utiliser 404 ou 410, car je veux indiquer qu'il s'agit toujours d'un chemin valide. 415 ? Je n'en suis pas sûr.

10voto

Dan Halperin Points 1586

La majorité des commentateurs craignent que vous ne cassiez les anciens clients en utilisant le même URI, ce qui est une préoccupation raisonnable. C'est la raison pour laquelle de nombreuses API sont versionnées dans les URI eux-mêmes.

Cela dit, pourquoi ne pas se contenter de 400 ? La demande provient d'un ancien client, il s'agit donc d'une mauvaise demande.

1voto

zack Points 2266

Pourquoi ne pas simplement inclure la version minimale supportée par le client en tant que métadonnées dans la réponse de l'API ? Le client peut alors vérifier et inviter l'utilisateur à mettre à jour si nécessaire. Il n'est pas nécessaire d'utiliser un code d'état particulier, il suffit de vérifier les métadonnées dans n'importe quelle réponse.

-2voto

mkharitonov Points 375

Je pense que le code de réponse 409 est le meilleur pour cela.

409 Conflit

Le code d'état 409 (conflit) indique que la demande n'a pas pu être traitée en raison d'un conflit avec l'état actuel de la ressource cible. Ce code est utilisé dans les situations où l'utilisateur peut résoudre le conflit et soumettre à nouveau la demande. Le serveur DEVRAIT générer un contenu contenant suffisamment d'informations pour permettre à l'utilisateur de reconnaître la source du conflit.

Les conflits sont plus susceptibles de se produire en réponse à une demande PUT. Par exemple, si le versioning est utilisé et que la représentation PUT comprend des modifications d'une ressource qui entrent en conflit avec celles apportées par une requête antérieure (tierce), le serveur d'origine pourrait utiliser une réponse 409 pour indiquer qu'il ne peut pas terminer la requête. Dans ce cas, la représentation de la réponse contiendrait probablement des informations utiles pour fusionner les différences sur la base de l'historique des révisions.

-3voto

Julian Reschke Points 12698

S'il s'agit toujours d'un chemin valide, votre serveur doit continuer à le prendre en charge au lieu d'indiquer une erreur.

Il semble que vous posiez la mauvaise question :-)

-12voto

Stas Glushko Points 1

426 Mise à niveau requise

https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

426 Mise à niveau requise Le client doit passer à un protocole différent tel que TLS/1.0, indiqué dans le champ d'en-tête Upgrade.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X