У меня есть приложение, в котором пользователь может создать множество подресурсов для данного.Допустим, конечная точка выглядит следующим образом:
POST /main-resources/{id}/sub-resources
Подресурс содержит период времени, ограниченный датами, как часть тела, что-то вроде:
{
"startDate": "2018-10-10",
"endDate": "2018-12-12"
}
Они также учитывают значениеобъекты.С точки зрения приложения, у них нет идентификатора (даже если они резервируются с помощью базы данных SQL, так что они имеют такой идентификатор), так как в этом случае нет смысла искать подресурс, не пройдя через основной..
Теперь я хотел бы создать конечную точку, которая позволяет пользователю находить подресурсы для данного основного ресурса, но при этом он должен возвращать только последний созданный ресурс, период времени которого содержит данную дату.Примерно так:
GET /main-resources/{id}/sub-resources/latest?date=2018-11-11
Моя проблема в том, что latest
мне кажется фильтром.latest
может возвращать разные значения при каждом вызове, в зависимости от того, создал ли пользователь новые подресурсы, которые, по моему пониманию, не являются RESTful.Вместо предыдущей конечной точки, я думаю, она должна выглядеть примерно так:
GET /main-resources/{id}/sub-resources?latest=true&date=2018-11-11
или
GET /main-resources/{id}/sub-resources?limit=1&date=2018-11-11&order=desc
, которая дает больше опций, но на самом деле не понадобится в моем случае использования.
Делая это таким образом, пользователь обычно ожидает один результат, но это закрывает дверь для других типов фильтрации, таких как фильтрация только по дате.
Так что в основном у меня есть возможность создатьконечная точка, которая включает latest
в качестве переменной пути, которая будет возвращать один элемент или использовать его в качестве параметра, который обычно должен возвращать список элементов, даже если этот фильтр указывает, что пользователь хочет только один, что делает его немногонемного раздражает клиента.
Есть ли другая альтернатива?