Мы разрабатываем API RESTful для возврата коллекций документов. Наша первоначальная реализация использует коды состояния HTTP, чтобы указать, не может ли выполнить запрос. Это, по-видимому, широко распространенная передовая практика (см., Например, here).Как следует исключать исключения из API RESTful для получения результатов?
Мы недавно столкнулись с проблемой, когда пользователь извлекал 1000 документов. Одно из попыток поиска документов не удалось, и таким образом мы вернули код состояния HTTP 500.
Альтернативой может быть возврат кода состояния HTTP 200 с полезной нагрузкой, содержащей 999 документов, которые мы смогли получить, а затем сборка ошибок, указывающая ту, которая не удалась.
Является ли этот альтернативный подход нарушением принципов RESTful? Как следует справляться с этой ситуацией? Существуют ли какие-либо варианты помимо этих двух подходов?
Спасибо Vivin за вход. Поэтому я предполагаю, что возможная разделительная линия - если ситуация считается «исключительной» или нет. Если да, то должен быть возвращен статус HTTP 500. Если ситуация не является исключением и, как ожидается, будет происходить регулярно как часть нормального использования API, то, возможно, HTTP 200 более уместен, отправляя информацию об ошибках в (хорошо документированный!) Контент полезной нагрузки. –
@JoeAlfano Исправить. Если это * фактическое * исключение, от которого пользователь не может действительно восстановить, то HTTP 500 в порядке. В противном случае вы можете предоставить любые частичные данные, которые у вас есть, а также ошибки, и пользователь может решить, как с этим справиться. –