Допустим, у меня есть RESTful, гипертекстовый сервис, который моделирует магазин мороженого. Чтобы лучше управлять своим магазином, я хочу иметь возможность отображать ежедневный отчет с указанием количества и стоимости в долларах каждого проданного мороженого.
Кажется, что эта возможность создания отчетов может быть представлена как ресурс под названием DailyReport. DailyReport может быть сгенерирован быстро, и нет никакого преимущества в том, чтобы фактически хранить отчеты на сервере. Я хочу, чтобы DailyReport был только на несколько дней, в другие дни меня не интересует получение DailyReport. Кроме того, хранение DailyReports на сервере может усложнить реализацию клиента, что может привести к удалению отчетов, которые им больше не нужны.
Ежедневный отчет является переходным; его представление может быть получено только один раз. Одним из способов реализации этого было бы предложить ссылку «/ daily-reports», POST, на которую будет возвращаться ответ, содержащий представление DailyReport со списком информации о продажах за этот день.
Редактировать: Давайте также скажем, что я действительно хочу сделать запрос POST. В DailyReport есть много различных вариантов создания представления, например, сортировка типов мороженого по алфавиту, по долларовой стоимости - или с учетом почасовой разбивки - или, при желании, с учетом температуры на этот день - или отфильтровывание определенных типов мороженого (в виде списка). Вместо того, чтобы использовать параметры запроса с GET, я бы предпочел POST представление DailyReport с соответствующими опциями (используя четко определенный пользовательский тип мультимедиа для документирования каждой опции). Представление, которое я получаю, будет отображать мои параметры вместе с самим отчетом.
Это правильный способ думать о проблеме, или вместо этого следует использовать какой-то другой подход? Если все правильно, какие особые соображения могут быть важны при реализации ресурса DailyReport? (Например, вероятно, было бы неправильно устанавливать заголовок Location при возврате после запроса POST).