ANÚNCIO

~/questoes/programacao

Qual status code HTTP deve ser retornado quando um recurso não é encontrado?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Para fixar

Entendendo o Status Code 404 em APIs

Conceito central

Os status codes HTTP são números que o servidor retorna para comunicar o resultado de uma requisição ao cliente. O 404 Not Found é específico para situações onde o recurso solicitado (uma rota, arquivo ou dado) não existe no servidor, diferente de outros erros como problemas de autenticação ou falhas internas.

Por que essa resposta faz sentido

O status 404 Not Found é o código correto quando um recurso não existe no servidor. Ele é diferente de outros erros: não significa que o servidor falhou (como 500), mas sim que a requisição foi bem formada e entendida, porém o recurso procurado não foi encontrado no banco de dados ou sistema.

Armadilhas comuns

  • Confundir 404 (recurso não existe) com 403 (usuário não tem permissão para acessar o recurso)
  • Usar 500 para todo tipo de erro, quando na verdade 500 é apenas para problemas internos do servidor
  • Devolver 200 OK mesmo quando um recurso não é encontrado, causando confusão no cliente que tentará processar uma resposta vazia

Entenda as alternativas

A

O status 200 OK indica que a requisição foi bem-sucedida e o recurso foi encontrado. Usar 200 quando um recurso não existe seria enganar o cliente, pois ele pensaria que a busca funcionou normalmente.

B

O status 500 Internal Server Error é usado quando há um problema no servidor (bug no código, banco de dados indisponível, etc.). Usar 500 para recurso não encontrado seria incorreto, pois confunde erros do servidor com erros de cliente.

C

O status 403 Forbidden significa que o servidor entendeu a requisição, mas o cliente não tem permissão para acessar aquele recurso. É diferente de 404: o recurso existe, mas está bloqueado para o usuário.

D

O status 404 Not Found é o código apropriado e padronizado em HTTP para indicar que o recurso solicitado não existe no servidor. É amplamente reconhecido e usado em toda a web, incluindo em APIs RESTful no Laravel.

Dica prática: Ao configurar rotas em Laravel, use `findOrFail()` ou `abort(404)` nos controllers para retornar automaticamente o status 404 quando um recurso não é encontrado. Exemplo: `User::findOrFail($id)` lança uma exceção que o Laravel converte em resposta 404.

Revise pensando: Se um cliente requisita GET /usuarios/999 e este usuário não existe no banco, qual status code deve ser retornado na resposta?