Я разрабатываю RESTful API, который использует коды состояния и глаголы HTTP в качестве ключевых компонентов в общении.
На религиозном уровне это фанатичная сторона RESTafarian.
Эмпирическим правилом для определения кодов состояния HTTP является этот график или аналогичные ресурсы.
GET /api/documents/1
-401
Пользователь не вошел в системуGET /api/documents/1
-200
У пользователя есть разрешениеGET /api/documents/1
-403
У пользователя нет разрешенияDELETE /api/documents/1
-204
Пользователи имеют разрешениеDELETE /api/documents/1
-403
У пользователя нет разрешенияGET /api/documents/2
-404
Разрешение пользователя не актуально, ресурс не существуетDELETE /api/documents/2
-404
Разрешение пользователя не актуально, ресурс не существуетDELETE /api/documents/1
-404
У пользователя есть разрешение, ресурс уже удаленDELETE /api/documents/1
-404
У пользователей нет прав, ресурс уже удален
Цели:
- Последовательность в использовании
- Не раскрывать личную информацию через ошибки
- Правильное использование кодов состояния для кэшей клиента или среднего уровня
- Сбой раньше, сведение запросов к минимуму
В этой ситуации есть много разных кодов состояния на выбор (404, 403, 410, 405), и в моем случае я выбрал 403 на существующем ресурсе, если это не ваше, чтобы не очищать кеш, и 404 на всех не существующие ресурсы, чтобы сказать клиентам стереть эти данные.
Но мне не нравится переход с 403 на 404 на чужих ресурсах.
Мне интересно услышать от других, как вы решили этот вариант использования или в целом, какие коды состояния вы считаете целесообразным отправлять во всех недопустимых вызовах DELETE, поскольку я считаю это одним из самых сложных для краткости.
(Множество обсуждений REST и ответов в Интернете в целом сводятся к следующему: «Бросьте 400 плохих запросов, все равно никого не волнует», у меня нет проблемы, требующей быстрого решения или прагматичного взлома. Спасибо)