Что означает HTTP-статус 405 Method Not Allowed?

«Что означает HTTP-статус 405 Method Not Allowed?» — вопрос из категории Сети, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HTTP-статус 405 "Method Not Allowed" означает, что метод HTTP-запроса (GET, POST, PUT, DELETE и т.д.), который использовал клиент, известен серверу, но не поддерживается для целевого ресурса (URI).

Как это выглядит? Сервер ДОЛЖЕН вернуть заголовок Allow, содержащий список разрешенных методов для данного URI.

HTTP/1.1 405 Method Not Allowed
Allow: GET, HEAD, OPTIONS
Content-Type: application/problem+json

{"title": "Method Not Allowed", "detail": "POST method is not supported for this endpoint."}

Типичные причины:

  1. Метод не реализован: Например, на эндпоинт /api/users реализован только GET, а клиент отправил POST.
  2. Ограничение доступа: Ресурс предназначен только для чтения, поэтому методы PUT, DELETE заблокированы.
  3. Ошибка конфигурации: Неправильная настройка маршрутизации (роутинга) в веб-фреймворке.

Пример в Spring Boot:

@RestController
@RequestMapping("/api/books")
public class BookController {
    // Поддерживается только GET
    @GetMapping
    public List<Book> getBooks() { /* ... */ }
    // POST, PUT, DELETE запросы к /api/books вызовут 405
}

Как обработать на клиенте? Проверить заголовок Allow и использовать один из указанных методов или сообщить пользователю об ошибке.