J'ai une API REST qui, pour certaines ententes comme DELETE, POST ou PUT, j'ai des règles de validation qui peuvent renvoyer une erreur.
Maintenant, j'ai besoin d'un nouveau type d'erreur comme une erreur non critique, qui devrait échouer de manière normale, mais devrait passer à l'action s'il y a un indicateur de "suppression des avertissements". Un tel utilisateur peut se demander: "Voulez-vous vraiment changer ce statut, vous n'avez pas encore terminé"
Question : existe-t-il une meilleure pratique pour ce type d'erreurs?
Questions secondaires :
- Existe-t-il une sémantique HTTP pour un tel comportement que je peux utiliser?
- puis-je toujours suivre l'idée REST (pour moi, ça a l'air que je fais) - je la garde apatride
rm /file
celle qui "avertit" que le fichier est en lecture seule tout en le supprimant de toute façon.409 CONFLICT
pour la réponse d'avertissement. De cette façon, le client est informé qu'il peut forcer l'appel avec le même point de terminaison et le même corps avec un paramètre exttra "force = 1"Réponses:
Il n'y a pas de code de résultat d'avertissement dans http, vous retournez soit un succès (200) soit une erreur (400, 500). La seule chose que je sache qui pourrait être analogue à ce que vous voulez est quelque chose comme le code 401 `` non autorisé '' - ce qui est un échec pur et simple, mais oblige la plupart des clients à réessayer automatiquement la connexion avec les informations d'identification.
Pour une API REST, vous devez indiquer au serveur l'état de la demande et comment gérer le résultat - vous ne pouvez pas envoyer de PUT et vous attendre à une erreur si le client n'est pas terminé, ou à un succès si c'est le cas - le serveur doit le savoir informations afin de renvoyer le bon code de résultat.
Vous pouvez donc envoyer l'indicateur «supprimer les avertissements» avec votre demande, s'il n'est pas défini, le serveur renverra un code d'erreur 409 (ou similaire), et s'il est défini, renvoie un code 200 à la place. On ne peut pas demander à l'utilisateur «voulez-vous changer ce statut» après l'envoi du changement de statut.
Vous pouvez faire une demande au serveur pour demander si l'utilisateur peut changer de statut bien sûr et suivre avec une demande appropriée après cela.
la source
Si vous souhaitez autoriser l'utilisateur à remplacer votre gestion d'erreur normale, vous pouvez envisager de renvoyer un état 200 SUCCESS avec des informations supplémentaires dans les en-têtes HTTP étendus. Par exemple, vous pouvez retourner
Cela donnerait à votre code côté client les informations nécessaires pour avertir l'utilisateur ou prendre des mesures correctives de son propre chef.
la source