Скажем, мне нужно предоставить услугу, где я могу запросить анализ пользователя за определенный период времени (общие действия, действия, отношения и т. д.). Я бы сразу подумал об этом как:
/users/{userId}/analyses - POST
/users/{userId}/analyses/{analysisId} - GET
Проблема здесь в том, где возникает ресурс «анализа» — он по своей сути основан на запросах, поскольку это служба, которая будет выполнять этот сложный анализ, а также служба, которая имеет самое последнее состояние пользователя. данные. Короче говоря, он не существует до запроса.
В моем текущем мышлении у меня есть три варианта запроса анализа в первый раз (с тем же поиском):
/users/{userId}/analyses?from=2017-01-01&to=2018-01-01 - GET
/users/{userId}/analyses - POST { "from": "2017-01-01", "to": "2018-01-01" }
/users/{userId}/analyses?from=2017-01-01&to=2018-01-01 - POST
Мне нравится GET с параметрами запроса, так как я запрашиваю ресурс и определяю объем пользовательских данных, которые будут использоваться, пока не узнаю, что ресурс может меняться между запросами (на основе данных на серверной части или изменения логики обработки), и что мне нужно будет позвонить во второй раз, чтобы отправить этот ресурс.
Мне нравится POST с телом запроса, так как я ожидаю, что ресурс будет создан, пока я не узнаю, что состояние, которое я передал, не является состоянием, которое я верну, когда я получу это позже, и это даже не того же типа гипермедиа.
Мне нравится POST с параметрами запроса и без тела, так как я создаю ресурс и определяю область этого ресурса, но я все еще передаю состояние, которое не является типом ресурса или конечного носителя, и я практически не видел другого примеры POST с параметрами запроса.
У кого-нибудь есть опыт таких действий в RESTful?