LINUX.ORG.RU

Работа с несколькими наборами данных через REST API

 , ,


0

1

Господа, а не подскажите как работать одновременно с несколькими наборами данных через REST API?

Я раньше с таблицами БД работал через SQL и там всё было просто.

Допустим есть таблица «проекты» и таблица «пользователи». И когда мне надо было получить имена и фамилии владельцев проектов списком, я просто делал подзапрос и через ID их вытягивал.

А как такое делать через REST API?

Оно не работает так же, как в SQL. Одна установленная сессия с сервером даёт возможность работать только с одним документом.

★★★★

Если ты говоришь про джойны таблиц, то в общем виде никак. Ты можешь попросить разработчика API добавить недостающие поля/запросы. Ты можешь попробовать вытащить основные данные одним запросом и уточнять необходимые детали последующими запросами. Возможен случай, что ты можешь запросить «все» данные из двух «таблиц» и сджойнить их на стороне клиента. Но это все теоретизирование, потому что нужно детально смотреть, что тебе нужно, и что даёт API.

Ещё есть GraphQL для решения в том числе этой проблемы. Но, очевидно, его сперва нужно реализовать на сервере.

filosofia
()

Господа, а не подскажите как работать одновременно с несколькими наборами данных через REST API?

Берёшь и работаешь. Что отдаёт API, то и просишь. НЕ знаешь, что? Читаешь доки. Нет док? Пишешь разрабу.

modest
()

Оно не работает так же, как в SQL

Это делает API за тебя, лезет в базу, сортирует, выбирает, а тебе даёт уже список (если у тебя есть доступ и это рееализовано) «имена и фамилии владельцев».

modest
()
Ответ на: комментарий от filosofia

Я вроде сказал. Нужно получить Имена владельцев проектов списком.

keeper_b ★★★★
() автор топика
Ответ на: комментарий от keeper_b

Запросов ты можешь делать сколько угодно. Свойство REST - делать обезличеные запросы )))

Я немного тебя не понимаю, что такое документ? Что мешает делать 100 запросов?

modest
()

Если через REST API, то был/есть https://jsonapi.org/, но по моим ощущениям (когда я пытался его прикрутить к одному проекту) эта штука мёртворождённая. Возможно под твой ЯП окажется удобная и живая реализация, но я в этом очень сомневаюсь, ну или сам пили с нуля, но это такое себе удовольствие, учитывая «многословность» формата и саму идею натягивания совы на глобус.

Я бы лучше взял GraphQL.

theNamelessOne ★★★★★
()
Ответ на: комментарий от keeper_b

Асинхронно или параллельно послать два запроса к разным эндпоинтам рест апи и если повезет и со стороны сервера обработка тоже «параллельная» то вы получите свои условно одновременные запросы.

abcq ★★
()
Ответ на: комментарий от abcq

и если повезет и со стороны сервера обработка тоже «параллельная» то вы получите свои условно одновременные запросы.

Это как? )))) По твоим словам получается, что сервер может работать только с одним клиентом? )))

modest
()
Ответ на: комментарий от modest

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

abcq ★★
()

Никак, Рест не дает тебе транзакционности. Если надо уже сджойненое получить, то надо просить разраба.

pozitiffcat ★★★
()
Ответ на: комментарий от keeper_b

Видимо, придется тянуть все нужные списки и объединять вручную.

Nervous ★★★★★
()
Ответ на: комментарий от keeper_b

Вьюху, по идее, делает программист в самой СУБД. Через api делается выборка данных из этой вьюхи.

looper
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.