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

Допустим, у меня есть REST API для доступа к пользовательским уведомлениям. У меня есть конечная точка для получения всех уведомлений:

GET https://server:443/api/notifications

, которая возвращает следующий ответ:

[
  {
    "status": "unread",
    "_id": "5db8228d710ab4b1e33f19b2",
    "title": "Some title",
    "time": "2019-10-29T11:29:17.402Z",
    "details": "Some details...",
    "user": "user1"
  },
  {
    "status": "unread",
    "_id": "5db8228d710ab4b1e33f19b3",
    "title": "Some title",
    "time": "2019-10-29T11:29:17.411Z",
    "details": "Some other details",
    "user": "user2"
  },
]

Теперь я хотел бы также иметь возможность получить количество уведомлений длякаждый пользователь в одном запросе , для которого ответ будет выглядеть примерно так:

[
  {
    "user": "user1",
    "count": 1
  },
  {
    "user": "user2",
    "count": 1
  },
]

Каков наилучший способ, с точки зрения соглашений REST, сделать это?

1 Ответ

1 голос
/ 29 октября 2019

Каков наилучший способ, с точки зрения соглашений REST, сделать это?

REST действительно не отвечает на это. REST говорит вам, что у вас есть ресурсы, но на самом деле он не предлагает никакого мнения о том, где должны быть «границы» ваших ресурсов.

Опять же, подумайте «веб-страницы». Вы можете добавить свое резюме на веб-страницу с описанием уведомлений, и это будет хорошо. Или вы можете решить, что уведомления описаны на одной веб-странице, а сводка - на другой веб-странице, и , что будет в порядке.

Что REST действительно говорит вам, что кэширование важно;поэтому, если вы считаете, что элементы управления кэшем для сводных данных должны отличаться от данных уведомлений, вам следует подумать о разделении этих данных на другой ресурс. Если вы считаете, что сводные данные и данные уведомлений должны быть синхронизированы, то более вероятно, что они принадлежат как один и тот же ресурс.

Конечно, в REST нет ничего, что говорит о том, что вы не можете иметь несколькоресурсы, которые возвращают «одинаковые» данные.

Если вы хотите, чтобы сводка была частью ресурса уведомлений, а также хотели, чтобы эта информация была независимо идентифицируемой, то вы бы использовали фрагментописать резюме «подресурс»;возможно https://server:443/api/notifications#summary.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...