Скажем, я создаю API, который обслуживает содержимое старых журналов. Клиент может запросить содержимое последней редакции до указанной даты, например:
GET /magazines/<some_magazine_id>?date=2015-03-15
Ответ включает в себя общие данные о журнале, такие как его название, страна распространения, дата создания. ... и если в моей базе данных есть содержимое, доступное для издания до указанной даты, оно также возвращает его.
Какой код состояния HTTP следует использовать, если клиент запрашивает данные за какую-либо дату, прежде чем что-либо есть в наличии? У меня могут быть данные в будущем, когда я расширю содержание своей базы данных. Так что это своего рода временный сбой, но неясно, сколько времени может пройти, прежде чем оно будет исправлено.
На основе на другие вопросы Я чувствую, что:
404
не правильно: в некоторых случаях у меня нет никаких данных о журнале, , в этом случае я бы вернул 404 Но это другое. Я хотел бы, чтобы пользователь получил частичные данные, но с указанием, что они являются только частичными. 4xx
- ошибки на стороне клиента. Я чувствую, что клиент не сделал ничего плохого. 206
Частичное содержимое отображается при возврате диапазона содержимого, но не всего. 30x
Я подумал об использовании 302 или аналогичного, и указал на ближайшее доступное издание, но опять же, я не уверен, что это правильно, потому что сейчас я указываю на что-то семантически отличное от задаваемого вопроса. 5xx
будут ошибками, и я думаю, что они не должны содержать никаких данных.
Моим лучшим предположением будет что-то вроде 2xx No Details Available (Yet)
, указывающее, что запрос был "несколько успешным", но Я не могу найти ничего, что кажется правильным в списке .