Tenho um serviço REST e WCF e desejo enviar um código de status personalizado com base na operação.
Por exemplo, quando alguma validação falha, quero enviar HTTP 444 e quando a autorização falha, quero enviar HTTP 455
A questão é como podemos validá-lo para serviços da Web SOAP e REST.
No cliente, como o código de erro atua porque quando você envia um HTTP 400/500 de um serviço WCF (usando SOAP), uma exceção é lançada no cliente mostrando o código de status?
Agora, se eu enviar um novo código de status personalizado, como o cliente lida com isso?
Respostas:
Sim, contanto que você respeite a classe - ou seja, 2xx para sucesso, 4xx para erro do cliente, etc. Portanto, você pode retornar códigos de erro 4XX personalizados (de preferência aqueles que não foram atribuídos) para as condições de erro do seu próprio aplicativo.
Para citar [RFC 2616] [1]:
Classe'
http://tools.ietf.org/html/rfc2616#section-6.1.1
fonte
Não recomendo a criação de seus próprios códigos de status HTTP, quando já existem códigos aplicáveis para as coisas que você deseja fazer em seu exemplo.
De https://tools.ietf.org/html/rfc4918#section-11.2 :
Pode-se argumentar que "incapaz de processar" pode ser devido a um erro de validação.
fonte
Sim, você pode adicionar códigos de erro personalizados. Se possível, use códigos já existentes e, se estiver declarando novos, tome cuidado para evitar colisões.
Você deve estar ciente de que alguns proxies filtram códigos desconhecidos . Tive problemas com usuários que estavam atrás de proxies que mapeavam 5XX para 500 e 4XX para 404. Isso fez com que minhas chamadas ajax falhassem na verificação do código de status.
fonte
Alguns aplicativos adicionam seus códigos de resposta personalizados no intervalo 600-799. Verifique por exemplo a lista de códigos de resposta do KeyNote aqui
Códigos de erro definidos do 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).
Se isso é uma boa prática, não ousaria dizer, mas é pelo menos uma referência interessante.
fonte
Aqui está a lista completa de todos os
HTTP
códigos disponíveis / indisponíveis .https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
Por exemplo, os seguintes itens com setas estão disponíveis para uso (porque não foram atribuídos) na
4XX
família.Espero que isso ajude alguém.
obrigado
fonte
Não, você só pode usar o código de requisitos de documentação rfc, consulte os detalhes em RFC1945
fonte