Olá, meu nome é Josh Gardino, e nestas lições, mostrarei como lidar com erros e testar APIs REST. Lembre-se de que os códigos de status de resposta HTTP são divididos em vários grupos. Os códigos de status no intervalo 400 e 500 são considerados erros. No entanto, a diferença crítica é que os códigos de status que começam com quatro são erros do cliente e os códigos de status que começam com cinco são erros do servidor. Os erros do cliente seriam erros relacionados à própria solicitação. A solicitação pode conter JSON formatado incorretamente, o acesso ao caminho solicitado foi proibido, o recurso solicitado não foi encontrado e muito mais. Quando ocorrem erros de cliente, é importante que o servidor responda com o código de status da série 400 correto. No entanto, mantendo todos os detalhes sobre o erro do cliente normalmente não é necessário no lado do servidor. O cliente deve ser capaz de resolver o problema e enviar um novo pedido. De maior preocupação no lado do servidor são os códigos de erro do servidor, e estes são os que começam com cinco. Embora existam vários códigos de resposta de erro do servidor, de longe, o mais importante e relevante é 500. 500 indica erro interno do servidor para uma condição inesperada no lado do servidor, o que significa que ocorreu um erro. O código de status 500 destina-se para ser uma resposta geral genérica. No entanto, é normalmente o único tipo de código de erro do lado do servidor que o código do lado do servidor da API REST precisa manipular. Outros códigos de erro do lado do servidor podem ser encontrados por um cliente, como 503 indicando que o servidor não está pronto. Mas esses tipos de respostas são normalmente enviados por um gateway de API e não pelo próprio aplicativo. Vamos dar uma olhada na API do Departamento de Veículos Automotores em Postman. Aqui está o endpoint GET v1/drivers e quando clico em Enviar, um código de status 200 é retornado e uma lista de todos os drivers do banco de dados. Agora vamos ver como isso fica no código-fonte. Aqui está o manipulador para o método GET. Ele executa uma consulta de seleção no banco de dados e retorna todos os dados. Isso funciona bem se nenhum erro for encontrado. No entanto, vamos forçar a ocorrência de um erro. Na linha 12, vou inserir algum código inválido. Vamos reiniciar o servidor e retornar ao Postman. Vou clicar em enviar e, como você pode ver, Não recebi um código de status ou qualquer tipo de resposta. Postman está mostrando um erro ECONNRESET. Isso significa que o servidor não respondeu com qualquer coisa que Postman pudesse processar. Vamos voltar para onde o servidor está rodando. Meu servidor local detectou com precisão o erro xyz e exibiu todos os detalhes na janela do console. Esses detalhes são chamados de rastreamento de pilha e são muito importantes para fins de depuração. A primeira linha na saída de erro me diz que este foi um erro de referência porque o servidor não entendeu o que é xyz, então o erro está sendo capturado corretamente mas o cliente não tem ideia do que aconteceu. O servidor pode estar inoperante, pode haver um problema de rede no lado do cliente, pode haver um erro no lado do servidor mas o cliente não tem como saber o que aconteceu e isso porque esse código não executa nenhum tipo de tratamento de erros. Quando o erro ocorrer, o servidor detecta que algo deu errado mas nenhuma resposta é enviada porque para o método GET, o único tipo de resposta que é enviado é um 200. Agora, vamos adicionar algum tratamento de erro para o aplicativo Node.js Express com instruções try e catch. Agora o erro está sendo tratado e todos os erros serão detectados na linha 16. Na linha 17, estou enviando o status 500 para o cliente. Vamos voltar ao Postman e tentar isso. Agora, quando eu enviar o pedido, Eu recebo uma resposta e ela tem um código de status 500 indicando erro interno do servidor. O cliente não sabe exatamente o que aconteceu no lado do servidor, mas tem muito mais informações do que com o pedido anterior. Certamente é possível enviar todos os detalhes do erro de volta ao cliente, juntamente com o código de status de erro interno do servidor 500 mas isso é certamente problemático. Mais importante, isso expõe detalhes internos sobre a API e isso apresenta um problema de segurança potencialmente sério mas também, esta informação não é útil para o cliente, então não há razão para enviá-lo mas isso não significa que o servidor tem que retornar uma mensagem genérica de resposta do servidor. Vamos voltar ao código e adicione uma mensagem de erro amigável. Agora, quando enviamos este pedido, ainda recebemos um 500 mas com uma mensagem de erro personalizada. Outro motivo para usar uma mensagem de código de status 500 personalizada é fornecer ao cliente um rastreamento ou ID de correlação que a equipe do lado do cliente da API poderia compartilhar com a equipe do lado do servidor para executar uma solução de problemas detalhada. Obrigado por assistir. Fique atento para a próxima lição onde eu vou te mostrar como usar testes automatizados para solicitações GET na API REST.