Ответ
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."}
Типичные причины:
- Метод не реализован: Например, на эндпоинт
/api/usersреализован толькоGET, а клиент отправилPOST. - Ограничение доступа: Ресурс предназначен только для чтения, поэтому методы
PUT,DELETEзаблокированы. - Ошибка конфигурации: Неправильная настройка маршрутизации (роутинга) в веб-фреймворке.
Пример в Spring Boot:
@RestController
@RequestMapping("/api/books")
public class BookController {
// Поддерживается только GET
@GetMapping
public List<Book> getBooks() { /* ... */ }
// POST, PUT, DELETE запросы к /api/books вызовут 405
}
Как обработать на клиенте? Проверить заголовок Allow и использовать один из указанных методов или сообщить пользователю об ошибке.