405 Метод не разрешен для УДАЛЕНИЯ

Я получаю сообщение «Метод 405 не разрешен», когда пытаюсь выполнить DELETE без передачи идентификатора ресурса, который необходимо удалить. Вот мой URL-адрес.

http://localhost:8080/api/vendors/delete/1234/

где в идеале я должен был указать идентификатор в конце URL-адреса, например:

http://localhost:8080/api/vendors/delete/1234/{id}

Я убежден, что это должен быть 405, но моя команда QA думает иначе. Они говорят, что это должно быть 400. Может ли кто-нибудь указать мне какой-либо ресурс, который четко указывает, какой HTTP-код должен быть для этого сценария.

Если у вас есть эта конечная точка с другим методом, тогда 405 будет правильным. Если у вас нет этой конечной точки с другим методом, это должно быть 404.

takendarkk 28.05.2019 20:54
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
3 214
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

На мой взгляд, 404 Not Found или 400 Bad Request — хороший вариант. Пожалуйста, обратитесь к этому ответу, а также Коды состояния HTTP

Ответ принят как подходящий
  1. По вашему основному вопросу, если метод равен DELETE, а путь /api/vendors/delete/1234/ действителен для других методов, но не для DELETE, то 405 Method Not Allowed («Метод запроса не поддерживается для запрошенного ресурса») правильный, так как есть «ресурс» на этом пути, который не поддерживает удаление, например он может поддерживать GET для получения списка поставщиков.

    Если ресурса там нет, т.е. способ не имеет значения, то правильным ответом будет 404 Not Found ("Запрашиваемый ресурс не найден").

  2. Если метод DELETE, а не GET, PUT, POST или любой другой, вам не нужно .../delete/... в пути.

  3. Если вы пытаетесь удалить поставщика 1234, путь должен быть http://localhost:8080/api/vendor/1234, а метод — DELETE. Обработчик действия должен использовать /api/vendor/{id} в объявлении.

Ах, ответ, который я искал. На самом деле ваш третий пункт спас положение. Как только я избавился от «удалить» в URL-адресе, я вижу 404 для запроса без {id} в URL-адресе. Чего и следовало ожидать... Большое спасибо, Андреас.

Akash Yellappa 28.05.2019 21:23

Другие вопросы по теме