Как правильно в RESTful API-парадигме описывать статистику ресурсов? - PullRequest
0 голосов
/ 14 января 2019

Предположим, что у нас есть какая-то коллекция users. Каждый user (отдельный ресурс) имеет своего рода статистику - количество комментариев, количество звонков, количество чего угодно. И каждая коллекция users может также иметь какую-то статистику - глобальную статистику.

Эта статистика может быть любой, от количества комментариев до чего-то более сложного.

В настоящее время я думаю о двух основных способах "интеграции" статистики в мой RESTful API:

  1. Для каждого отдельного ресурса user добавить специальное вычисляемое поле - balance, mediumAgeOfMaleFriends и т. Д. При выполнении запроса GET к ресурсу user я зациклюсь для каждого поля в параметре запроса fields и вычислю соответствующие значения. Пример: .../user/123?fields=balance,name,email,mediumAgeOfFemaleFriends
  2. В каждом ресурсе создайте подресурс с именем reports (или что-то в этом роде), создайте шаблоны ресурсов отчета (с предопределенными конфигурациями) и выполните такие же GET запросы, например: .../users/123/reports/1?from=...&to=...

Но эти два способа не похожи на настоящие RESTful способы.

1 Ответ

0 голосов
/ 14 января 2019

Я не думаю, что существует RESTful соглашение как таковое для статистики или отчетов. Оба ваших варианта кажутся мне разумными (хотя склоняются к Вариант 2 ).

Другой альтернативой является наличие корневого ресурса для «отчетов», например, /reports/user/123. Это может пригодиться в будущем, если вы решите распространять отчеты на другой ресурс, кроме «пользователя».

Для вдохновения вы также можете взглянуть на HubSpots Analytics - API отчетов .

...