Я определяю API и столкнулся с вопросом, с которым мне раньше не приходилось сталкиваться. Мне было интересно, каков будет консенсус в отношении лучшего кода состояния для ответа, когда результат неизвестен (пока).
Чтобы объяснить, рассматриваемая конечная точка GET не возвращает ресурс, это просто инструмент для возврата конкретной информации об известных датах.
Данные внутреннего календаря, которые он использует для этого, периодически загружаются вручную частями. Итак, если пользователь делает запрос на дату, которая выходит за пределы (или предшествует) загруженному диапазону дат, как должен реагировать API?
Первоначально я думал об ошибке 4xx, но синтаксис и запрос технически действительны. Попытка точно такого же запроса в другое время (когда данные для этой даты уже загружены) приведет к успешному ответу.
Глядя на ошибки 5xx, non кажется идеальным совпадением. 503 Служба недоступна выглядит ближе всего ко мне, но, похоже, сосредоточена на временных ошибках. Эта ситуация может длиться в течение месяцев потенциально. Сложная проблема заключается в том, что сам API не знает, когда будут загружены дополнительные данные, поэтому мы также не можем легко использовать заголовок Retry-After.
Чтобы ты делал? Спасибо!
manually loaded in chunks periodically
я предполагаю, что фоновая задача в вашем интерфейсе постоянно передает новые записи даты из бэкэнда, а запрос, обработанный вашим интерфейсом, просто возвращает записи даты в пределах запрошенного диапазона времени? В таком случае я считаю естественным возвращать только то, что доступно в настоящее время и в пределах запрошенного диапазона времени на момент запроса. Если временной диапазон полностью выходит за пределы любых доступных записей дат, я бы вернул пустой список/набор, чтобы указать, что данные для данного временного диапазона не найдены. Следовательно,200 OK
в порядке - person Roman Vottner   schedule 18.04.2019