Реализация JSONAPI

Я провел исследование, чтобы найти способ реализовать стандартный JSONAPI (https://jsonapi.org), но Я не нашел источника правды или убедительного способа реализовать это.

чтобы представить это в реальном примере, у нас есть следующий ответ

{
  "data": {
    "type": "articles",
    "id": "1",
    "attributes": {
      // ... this article's attributes
    },
    "relationships": {
      // ... this article's relationships
    }
  }
}

поэтому ожидаемые объекты, которые у нас есть, это статья и, возможно, автор. эти объекты хранятся в базе данных (SQL или NoSQL), и любой инструмент используется для запроса данных (Mongoose, Knex, typeorm..etc)

ожидаемый возвращаемый результат из базы данных (выберите 1-й из статей)

{
  "name":"article1",
  "id":"1"
}

и вопрос в том, где лучше всего обработать ответ из БД и передать его в стандарт JSONAPI? это слой модели? Контроллер? просмотреть или добавить слой презентации?

Я думал о способе реализации этого с помощью механизма шаблонов (pug, Handlebars и т. д.), но хорошая ли это идея? поскольку целью механизма шаблонов является HTML, а не JSON?

в случае, если рекомендуется использовать механизм шаблонов для рендеринга JSON, есть ли какой-либо доступный механизм шаблонов JSON для генерации JSON?

Любой совет или руководство или хорошо написанный пример можно посмотреть?

Спасибо.


person Allloush    schedule 22.02.2020    source источник
comment
Я не могу придумать причин, по которым вам нужен механизм шаблонов. Должно быть просто JSON.stringify().   -  person Brad    schedule 22.02.2020


Ответы (1)


Я сделал это в контроллерах своего приложения NestJS, используя jsonapi-serializer. Я создал сервис для сериализации JSON API. Это казалось мне лучшим разделением интересов. Контроллер получает данные от службы, затем вызывает службу сериализации, а затем возвращает ответ вызывающей стороне.

person Josh Wulf    schedule 22.02.2020