J'ai un service REST et WCF et je souhaite envoyer un code d'état personnalisé en fonction de l'opération.
Exemple lorsqu'une validation échoue, je veux envoyer HTTP 444 et lorsque l'autorisation échoue, je veux envoyer HTTP 455
La question est de savoir comment le faire valider pour les services Web SOAP et REST.
Sur le client, comment agit le code d'erreur, car lorsque vous envoyez un HTTP 400/500 à partir d'un service WCF (à l'aide de SOAP), une exception est lancée sur le client affichant le code d'état.
Maintenant, si j'envoie un nouveau code de statut personnalisé, comment le client gère-t-il cela?
Réponses:
Oui, tant que vous respectez la classe - c'est-à-dire 2xx pour le succès, 4xx pour l'erreur du client, etc. Vous pouvez donc renvoyer des codes d'erreur 4XX personnalisés (de préférence ceux qui ne sont pas attribués) pour les conditions d'erreur de votre propre application.
Pour citer la [RFC 2616] [1]:
Classe'
http://tools.ietf.org/html/rfc2616#section-6.1.1
la source
Je recommande de ne pas créer vos propres codes d'état HTTP, lorsque des codes applicables existent déjà pour les choses que vous souhaitez faire dans votre exemple.
Depuis https://tools.ietf.org/html/rfc4918#section-11.2 :
On peut faire valoir que "impossible de traiter" pourrait être dû à une erreur de validation.
la source
Oui, vous pouvez ajouter des codes d'erreur personnalisés. Si possible, utilisez des codes qui existent déjà, et si vous en déclarez de nouveaux, veillez à éviter les collisions.
Sachez cependant que certains proxys filtrent les codes inconnus . J'ai eu des problèmes avec les utilisateurs qui se trouvaient derrière des proxys qui mappaient 5XX à 500 et 4XX à 404. Cela a fait que mes appels ajax échouaient à vérifier le code d'état.
la source
Certaines applications ajoutent leurs codes de réponse personnalisés dans la plage 600-799. Vérifiez par exemple la liste des codes de réponse de KeyNote ici
Codes d'erreur définis par Keynote (600-799)
600: CONNECTION ERROR - This indicates a general connection error 601: INCOMPLETE ERROR - This indicates sever sends an incomplete page/object (as indicated by Content-Length header) 602: UNEXPECTED CLOSE ERROR - This indicates socket connection has been closed unexpectedly 603: REFUSED ERROR - This indicates a request to connect to the server is refused 604: TIMEOUT ERROR - This indicates there is no activity in socket connection in 3 minutes 605: REDIRECT ERROR - This indicates an error in redirect HTTP header 606: SSL ERROR - This indicates a general error in SSL 607: HEADER ERROR - This indicates a malformed HTTP header 608: EMPTY RESPONSE ERROR - This indicates server doesn't send any response after a request is sent 609: UNKNOWN HOST ERROR - This indicates socket receives an unknown host error from DNS 610: NO ROUTE TO HOST ERROR - This indicates a no route to host error was received while attempting to open a socket 611: SOCKET ERROR - This indicates a general socket error 612: FRAME LOOP ERROR - This indicates a page has a frame loop (frame A includes Frame B that includes Frame A) 613: REDIRECT LOOP ERROR - This indicates a page has a redirect loop (page A redirects to page B that redirects to page A) 614: CONNECTION RESET ERROR - This indicates socket receive a reset signal from the server 615: SOCKET PROTOCOL ERROR - This indicates an error in socket protocol 616: SOCKET BIND ERROR - This indicates an error in binding the socket 617: CONNECTION ERROR - This indicates a general socket connection error 618: CHUNK ERROR - This indicates an error in chunked encoding 619: SSL TIMEOUT - This indicates a timeout during SSL handshake (2 minutes) 620: SSL END OF INPUT - This indicates an end-of-file is received during SSL handshake 621: SSL HANDSHAKE ERROR - This indicates a general error during SSL handshake 622: SSL CERTIFICATE ERROR - This indicates an error in SSL certificate verification 623: SSL AUTHENTICATION ERROR - This indicates an authentication error during SSL handshake 624: SSL BAD MAC ERROR - This indicates a bad MAC during SSL handshake 625: SSL CIPHER ERROR - This indicates a cipher error during SSL handshake 701: ERROR TEXT FOUND - This code is returned if any error text (such as, "Service Unavailable") are found in the main page (frame HTML contents included). Note that the error text must be defined in advance of the test. Error text means if the text is found, this session should be considered a failure. 702: REQUIRED TEXT NOT FOUND - This code is returned If not all required texts are found in the main page. Note that required text must be defined in advance of the test. Required text means if the text is not found, this session should be considered a failure. 703: HTML BODY EMPTY - This code is returned if the HTML body of the page is empty (only if error text or required text has been defined).
Si c'est une bonne pratique, je n'oserais pas le dire, mais c'est au moins une référence intéressante.
la source
Voici la liste complète de tous les
HTTP
codes disponibles / indisponibles .https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
Par exemple, les flèches suivantes peuvent être utilisées (car elles ne sont pas attribuées) sur la
4XX
famille.J'espère que ça aidera quelqu'un.
Merci
la source
Non, vous ne pouvez utiliser que le code des exigences de documentation rfc, voir les détails dans RFC1945
la source