@semolex

Как комбинировать обьекты c RESTful API с помощью Angular?

Всем привет!
Сейчас попытаюсь обьяснить ситуацию:
Есть REST Api, которое отдает все обьекты (Python Flask) в таком виде:
"/catalogues/<_id>" - возвращает обьекты из каталога по айди
"/catalogues/" - возвращает все обьекты из каталога по айди
"/items/<_id>" - возвращает все обьекты, которые лежат в каталоге
"/items/" - возвращает обьекты которые лежат в каталоге по айди


Так вот, пример ответа из /catalogues/<_id>:
{catalog_image: 4, catalog_name: 1, id: 1, items: 1, object_name: "M31"} ,
{catalog_image: 3, catalog_name: 1, id: 2, items: 2, object_name: "M45"}

где например items содержит в себе айди обьекта item.
пример item:
{name: "My Item", id: 1"}
Так вот, как мне сделать так, чтоб я мог комбинировать эти запросы, тоесть получил обьект вида
{catalog_image: 3, catalog_name: 1, id: 2, items: My Item, object_name: "M45"}
??
Или наиболее простой вариант - комбинировать все на бэкенде, выборкой из базы данных (JOINom)...но тогда теряется идея РЕСТ...
  • Вопрос задан
  • 198 просмотров
Решения вопроса 3
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
angular тут не причем. Это вы уже сами должны разруливать. Так же можете посмотреть на библиотеки для работы с rest api (restangular, ngResource, js-data или любая другая популярная либа).

но тогда теряется идея РЕСТ...

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

p.s. если вам не понятно - предлагаю ознакомиться с примерами из jsonapi.org
Ответ написан
Комментировать
@kondaurov
Full stack developer
Вопрос относится полностью к backend, а точнее к rest сервису

Тут есть два варианта:
1. Вы делаете отдельный роут по которому будете отдавать все каталоги с объектами и их связями
2. Можно сделать api гибче и дать возможность указывать связи которые нужно прикрепить с помощью параметров.
jsonapi.org/format/#fetching-relationships

Я пока использую первый вариант, второй вариант чуть сложнее и требует больше времени чтобы разобраться

Или наиболее простой вариант - комбинировать все на бэкенде, выборкой из базы данных (JOINom)...но тогда теряется идея РЕСТ...

Не нужно пользоваться Rest ради Rest. Нужно чтобы api отдавала нужную вам информацию в нужном виде а не соответствовала идейным представлениям. Rest нужен для CRUD операций с ресурсами в основном

У меня пока все просто: Я создаю ресурсы и делаю CRUD роуты по
Ответ написан
Комментировать
@dixoNich
frontend developer
Вопрос к бэкэнду.
У нас в проекте это выглядит как-то так: /catalogues/id?populate=item
То есть каталог вернётся с привязанным к нему item.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы