Skip to content

Boas práticas

Jalussa dos Santos edited this page Mar 10, 2024 · 6 revisions

Retornos para requisições HTTP

O protocolo HTTP (Hypertext Transfer Protocol, RFC 2616) é o protocolo responsável por fazer a comunicação entre o cliente, que normalmente é um browser, e o servidor. Dessa forma, a cada “requisição” feita pelo cliente, o servidor responde se ele obteve sucesso ou não. Se não obtiver sucesso, na maioria das vezes, a resposta do servidor será uma sequência numérica acompanhada por uma mensagem. Se não soubermos o que significa o código de resposta, dificilmente saberemos qual o problema que está acontecendo, por esse motivo é muito importante saber quais são os códigos HTTP e o que significam.

HTTP 204 No Content

  • O uso da classe ResponseEntity no método de exclusão permite controlar a resposta devolvida pela API. No código apresentado, o método de exclusão retorna um ResponseEntity com o código HTTP 204 No Content, indicando que a exclusão foi realizada com sucesso e sem conteúdo. Isso garante uma resposta adequada para a requisição de exclusão. O noContent() cria um objeto e chamamos o build() para construir o objeto ResponseEntity.

HTTP 200 Ok

  • No método de listagem apresentado, o ResponseEntity é utilizado para retornar a lista de médicos ativos. O código retorna um ResponseEntity contendo a lista de médicos no formato de página, com o código HTTP 200 OK. Isso garante uma resposta adequada para a requisição de listagem.

HTTP 201 Created

  • O código de resposta HTTP 201 Created é utilizado para indicar que uma requisição de criação foi bem-sucedida. No contexto do código apresentado, o ResponseEntity com o código 201 é retornado no método de cadastro de um novo médico, indicando que o cadastro foi realizado com sucesso. Isso garante uma resposta adequada para a requisição de criação.

  • O Created pode retornar um cabeçalho, o cabeçalho Location, que indica o endereço do recurso cadastrado na API. Ele é utilizado para informar ao cliente onde encontrar o recurso recém-criado.

Categoria de códigos

  • Os códigos HTTP (ou HTTPS) possuem três dígitos, sendo que o primeiro dígito significa a classificação dentro das possíveis cinco categorias.

  • 1XX: Informativo – a solicitação foi aceita ou o processo continua em andamento;

  • 2XX: Confirmação – a ação foi concluída ou entendida;

  • 3XX: Redirecionamento – indica que algo mais precisa ser feito ou precisou ser feito para completar a solicitação;

  • 4XX: Erro do cliente – indica que a solicitação não pode ser concluída ou contém a sintaxe incorreta;

  • 5XX: Erro no servidor – o servidor falhou ao concluir a solicitação.

Principais códigos de erro

  • Como dito anteriormente, conhecer os principais códigos de erro HTTP vai te ajudar a identificar problemas em suas aplicações, além de permitir que você entenda melhor a comunicação do seu navegador com o servidor da aplicação que está tentando acessar.

  • Error 403 O código 403 é o erro “Proibido”. Significa que o servidor entendeu a requisição do cliente, mas se recusa a processá-la, pois o cliente não possui autorização para isso.

  • Error 404 Quando você digita uma URL e recebe a mensagem Error 404, significa que essa URL não te levou a lugar nenhum. Pode ser que a aplicação não exista mais, a URL mudou ou você digitou a URL errada.

  • Error 500 É um erro menos comum, mas de vez em quando ele aparece. Esse erro significa que há um problema com alguma das bases que faz uma aplicação rodar. Esse erro pode ser, basicamente, no servidor que mantém a aplicação no ar ou na comunicação com o sistema de arquivos, que fornece a infraestrutura para a aplicação. Por padrão, exceções não tratadas no código são interpretadas pelo Spring Boot como erro 500.

  • Error 503 O erro 503 significa que o serviço acessado está temporariamente indisponível. Causas comuns são um servidor em manutenção ou sobrecarregado. Ataques maliciosos, como o DDoS, causam bastante esse problema.

Uma dica final: dificilmente conseguimos guardar em nossa cabeça o que cada código significa, portanto, existem sites na internet que possuem todos os códigos e os significados para que possamos consultar quando necessário. Existem dois sites bem conhecidos e utilizados por pessoas desenvolvedoras, um para cada preferência: se você gosta de gatos, pode utilizar o HTTP Cats; já, se prefere cachorros, utilize o HTTP Dogs.

Tratando erros

Stacktrace

  • A propriedade trace, sendo a stack trace do erro é exibida no console, informando qual a exception que ocorreu. Porém, não é uma boa prática retornarmos um stack trace para o usuário da API, seja em uma aplicação front-end ou aplicativo mobile que está consumindo a nossa API. Para seguir a boa prática é incluído no application.properties a linha server.error.include-stacktrace=never. Para saber mais, você pode acessar a documentação oficial no link: Common Application Properties.