Мой вопрос довольно общий для кода состояния HTTP, когда DELETE невозможно на ресурсе (но не в отношении прав пользователя).
У нас есть RESTful API для типа ресурса.
Метод DELETE разрешен на ресурсе, однако при некоторых условиях ресурс не может быть удален (если есть данные, привязанные к этому ресурсу).
Каков правильный код состояния HTTP для возврата к клиенту в этой ситуации?
Вот некоторые из возможностей, которые я собрал и почему это кажется неуместным в моем случае:
- 403 (Запрещено): По большей части это связано с правами пользователя.
- 405 (метод не разрешен): похоже, что API не предназначен для ответа на этот метод для этого типа ресурсов.
- 409 (конфликт): кажется целесообразным, но клиент должен иметь возможность разрешить конфликт с API, но это не так.
Обновление: Связывание данных, которое предотвращает удаление ресурса, не может быть изменено с помощью REST API. Однако ресурс может быть "освобожден" по-другому, поскольку база данных, из которой поступают данные, также доступны другими приложениями, которые могут изменять состояние ресурса (SQL DELETE в БД всегда может это сделать).