HTTP 501 Not Implemented
Сервер просто не может этого сделать: запрошенная функциональность — обычно HTTP-метод — вообще не поддерживается.
Что означает HTTP 501
HTTP 501 Not Implemented означает, что сервер не распознаёт или не поддерживает функциональность, необходимую для выполнения запроса. Спецификация резервирует этот код в основном для нераспознанных HTTP-методов — сервер не может обработать метод ни для одного ресурса, в отличие от 405, где метод известен, но запрещён для конкретного URL.
На практике 501 также встречается у прокси и legacy-серверов, получающих запросы, для которых они не были рассчитаны (методы WebDAV, PATCH на старых стеках), либо как заглушка на наполовину настроенных бэкендах.
Частые причины ошибок 501
- HTTP-метод, который сервер вообще не реализует (например, PATCH или методы WebDAV на старом сервере).
- Прокси или шлюз, получивший метод запроса, который он не может передать дальше.
- Заглушка эндпоинта, развёрнутая до завершения её реализации.
- Некорректно сформированные имена методов из-за ошибок в клиентах (опечатки вроде GETT).
Как исправить со стороны разработчика
- Проверьте точный отправляемый метод — опечатки и неверный регистр в пользовательских методах встречаются на удивление часто.
- Если метод легитимен (например, PATCH), обновите или настройте сервер/фреймворк для его поддержки, либо туннелируйте через POST с заголовком переопределения там, где это позволяет стек.
- Отличайте от 405: если метод отклоняет только один маршрут, исправьте маршрут (область 405); если это делает весь сервер — это пробел в возможностях платформы.
- Не возвращайте 501 для незавершённых функций в продакшен-API — используйте 404 или feature flag, поскольку 501 по умолчанию кешируется.
Пример ответа
HTTP/1.1 501 Not Implemented
Content-Type: application/json
{"error":"not_implemented","message":"PATCH is not supported by this server"}Частые вопросы
В чём разница между 501 и 405?
405 означает, что URL существует, но отклоняет этот метод (см. заголовок Allow). 501 означает, что сервер вообще не поддерживает метод ни для одного ресурса.
Является ли ошибка 501 временной?
Обычно нет — это указывает на отсутствующую возможность, а не на сбой. Ошибка исчезает только тогда, когда сервер получает поддержку запрошенной функциональности.
Почему мой запрос PATCH возвращает 501?
Сервер или промежуточный прокси создан до появления поддержки PATCH. Обновите стек, включите метод либо используйте переопределение метода через POST.