в этом примере мы не имеем дело с каким-либо ресурсом
Resource
в контексте REST означает что-то определенное c. Вот как Филдинг описывает ресурс :
Ключевая абстракция информации в REST - это ресурс. Любая информация, которая может быть названа, может быть ресурсом: документ или изображение, временная служба (например, «сегодняшняя погода в Лос-Анджелесе»), набор других ресурсов, не виртуальный объект (например, человек) и т. Д. , Другими словами, любая концепция, которая может быть целью гипертекстовой ссылки автора, должна вписываться в определение ресурса.
Таким образом, в рамках REST совершенно разумно сказать, что /week?date=2020/04/14
идентифицирует ресурс, представление которого описывает календарную неделю.
Поскольку HTTP-запрос в этом случае фактически имеет семантику только для чтения (иначе говоря, "безопасную" семантику) - мы не ожидаем, что сервер каким-либо образом изменится - естественным соответствием для этого запроса будет использование GET
.
GET /week?date=2020/04/14
Как правило, все, что просто возвращает результат вычисления, должно использовать GET с параметрами, предоставленными клиент, закодированный в идентификатор ресурса (как мы это делали с формами GET в сети).
Исключением из этого являются те случаи, когда параметры настолько велики / многочисленны, что ваши запросы ограничиваются фактическими ограничениями по длине URI. В этих случаях вы используете POST, жертвуя простым кэшированием для выполнения работы.