Несколько конечных точек в одном запросе - PullRequest
0 голосов
/ 23 марта 2020

Работает отлично, с одной конечной точкой. С помощью apollo-link-rest я создал клиента, который выглядит следующим образом:

const restLink = new RestLink({ uri: "https://example.com/" })

И экспортировал клиента с new ApolloClient({...})

Теперь на вопрос

На одном и том же сервере https://example.com/ имеется несколько конечных точек, все с одинаковыми полями, но с разными данными в каждом

Первый запрос, который работает, выглядит так

export const GET_PRODUCTS = gql`
   query firstQuery {
    products @rest(type: "data" path: "first/feed") { // the path could be second/feed and it will work with different data
     id
     title
   }
 }
`

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

1 Ответ

0 голосов
/ 23 марта 2020

Использование псевдонимов

Вы можете (должно быть возможно) использовать стандартный метод для выполнения похожих запросов - получить множество данных (результатов), обычно доступных в виде одной фигуры (имени узла). Это описано здесь .

{ 
  "1": products(....
  "2": products(....
  ...
}

Пути могут быть созданы с использованием переменных

Результаты могут быть легко объединены путем итерации по data объекту , Проблема? Только для фиксированного количества (не много) конечных точек, так как запрос не должен генерироваться при манипуляциях со строками.

Несколько запросов graphql

Вы можете создавать запросы в al oop - параметризовать - используя Promise.all() и apollo-client client.query(. Результаты также должны быть объединены в один.

Выборочная выборка

Используя Выборочную выборку , вы можете создать запрос, содержащий массив путей. В этом случае распознаватель должен использовать Promise.all() для параметризованных fetch запросов. Объединенные результаты могут быть возвращены как один узел (при необходимости).

Bads

Все эти методы требуют выполнения нескольких запросов. Проблема может быть решена путем создания оболочки REST на стороне сервера ( docs или blog ).

...