HTTP 501 Not Implemented

O servidor simplesmente não consegue fazer isso: a funcionalidade solicitada — geralmente o método HTTP — não é suportada de forma alguma.

O que significa HTTP 501

HTTP 501 Not Implemented significa que o servidor não reconhece ou não suporta a funcionalidade necessária para atender à requisição. A especificação reserva isso principalmente para métodos HTTP não reconhecidos — o servidor não consegue lidar com o verbo para nenhum recurso, ao contrário do 405, em que o verbo é conhecido mas não permitido para essa URL.

Na prática, o 501 também aparece em proxies e servidores legados que recebem requisições para as quais nunca foram construídos (verbos WebDAV, PATCH em stacks antigas), ou como um placeholder em backends parcialmente configurados.

Causas comuns dos erros 501

  • Um método HTTP que o servidor não implementa de forma alguma (por exemplo, PATCH ou verbos WebDAV em um servidor antigo).
  • Um proxy ou gateway recebendo um método de requisição que não consegue encaminhar.
  • Um endpoint stub implantado antes de sua implementação ser concluída.
  • Nomes de método malformados vindos de clientes com bugs (erros de digitação como GETT).

Como corrigir como desenvolvedor

  • Verifique o método exato sendo enviado — erros de digitação e verbos personalizados com maiúsculas/minúsculas incorretas são surpreendentemente comuns.
  • Se o método for legítimo (por exemplo, PATCH), atualize ou configure o servidor/framework para suportá-lo, ou encaminhe via POST com um cabeçalho de override onde a stack permitir.
  • Diferencie do 405: se apenas uma rota rejeita o verbo, corrija a rota (território do 405); se o servidor inteiro rejeita, é uma lacuna de capacidade da plataforma.
  • Não retorne 501 para funcionalidades inacabadas em APIs de produção — prefira 404 ou uma feature flag, já que 501 é cacheável por padrão.

Exemplo de resposta

HTTP/1.1 501 Not Implemented
Content-Type: application/json

{"error":"not_implemented","message":"PATCH is not supported by this server"}

Perguntas frequentes

Qual é a diferença entre 501 e 405?

405 significa que a URL existe mas rejeita esse método (veja o cabeçalho Allow). 501 significa que o servidor não suporta o método para nenhum recurso.

Um erro 501 é temporário?

Geralmente não — indica uma capacidade ausente, não uma indisponibilidade. Só desaparece quando o servidor passa a suportar a funcionalidade solicitada.

Por que minha requisição PATCH retorna 501?

O servidor ou um proxy intermediário é anterior ao suporte a PATCH. Atualize a stack, habilite o método, ou use um override de método baseado em POST.