Каков наиболее подходящий ответ HTTP от серверной службы при попытке удалить запись, которая больше не существует в базе данных? - PullRequest
1 голос
/ 29 мая 2019

Моя команда разрабатывает простой бэкэнд-сервис, который обеспечивает операции ADD, GET и REMOVE очень простым элементом. Все они запускаются HTTP-запросом, и они мало чем отличаются от добавления, получения и удаления элемента из базы данных.

Что касается конкретного сценария, в котором операция REMOVE запускается для элемента, которого нет в БД (например, был удален ранее), наш вопрос, каким должен быть ответ службы? Мы обсуждали варианты, такие как 200 + some specific message, 410 - resource gone, среди других возможностей 2XX и 4XX, но мы не достигли консенсуса.

Надеюсь, это не Велосипедная прогулка .

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 29 мая 2019

Каким должен быть ответ службы?

Важно подчеркнуть, что коды состояния предназначены для указания результата попытки сервера понять иудовлетворить запрос клиента.Сказав это, 2xx коды состояния не подходят для этой ситуации и их следует избегать:

2xx (Успешный) класс статусаКод указывает, что запрос клиента был успешно получен, понят и принят.

Наиболее подходящий код состояния будет в диапазоне 4xx:

Класс кода состояния 4xx (Ошибка клиента) указывает, что клиент, похоже, допустил ошибку.За исключением ответа на запрос HEAD, сервер ДОЛЖЕН послать представление, содержащее объяснение ситуации ошибки и является ли это временным или постоянным условием.

404Код состояния , кажется, является тем, что вы ищете, поскольку он указывает, что сервер не может найти запрошенный ресурс:

6.5.4.404 Не найдено

Код состояния 404 (Не найдено) указывает на то, что исходный сервер не нашел текущее представление для целевого ресурса или не желает раскрыть, что он существует.Код состояния 404 не указывает, является ли это отсутствие представления временным или постоянным;[...]

Если вы обеспокоены тем, как клиент поймет ответ 404, вы можете предоставить ему полезную нагрузку, сообщив, что такой ресурс больше недоступен.


И просто учтите, что ADD и REMOVE не являются стандартными методами HTTP.Надеюсь, это опечатка, и вы используете POST (или PUT) и DELETE для выражения операций над вашими ресурсами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...