Как каскадировать GraphQL?

В настоящее время я использую «клиентский сервер GraphQL» для переноса конечной точки RESTful в конечную точку GraphQL.

Но что, если серверная часть также является конечной точкой GraphQL? Как я могу легко поставить в очередь другой сервер GraphQL на сервере GraphQL?

Или, в более общем смысле, если у меня есть серверы GraphQL «A» и «B», предоставляющие микросервисы, я использую сервер GraphQL «C» для интеграции «A» и «B». Должен ли я использовать какой-то «клиент на стороне сервера», используя apollo-client или около того, чтобы поставить в очередь «A» и «B» в «C»?


person 林东吴    schedule 12.10.2016    source источник
comment
Прямо сейчас я не знаю, как это сделать, но на GitHub было обсуждение: github.com/graphql/graphql-js/issues/490   -  person stubailo    schedule 13.10.2016
comment
Реальный пример использования: Neo4j теперь может экспортировать API GraphQL из расширения Neo4j-GraphQL. Если PostgreSQL экспортирует другой API GraphQL, объединение их в единый источник GraphQL становится проблемой.   -  person 林东吴    schedule 25.08.2017


Ответы (2)


Я никогда не видел, чтобы GraphQL на стороне клиента использовался таким образом, но я думаю, что он будет работать как обычно. У вас есть запрос с преобразователем, который возвращает данные. В этом случае вы должны использовать запрос GraphQL вместо запроса API REST, но принцип тот же.

Помните, что GraphQL ничем не отличается от любого другого API. Вы отправляете HTTP-запросы (с GraphQL все запросы являются POST) на конечную точку URL-адреса (с GraphQL URL-адрес всегда один и тот же) и отправляете данные параметров вместе с вашим запросом (с GraphQL это то место, куда идет весь запрос).

Я предполагаю, что вы могли бы перевести свои переменные из запроса GraphQL клиента в переменные запроса GraphQL сервера и построить свой запрос таким образом.

С помощью cURL вы можете запросить в следующем формате:

$ curl -XPOST -H "Content-Type:application/graphql"  -d 'query RootQueryType { count }' http://localhost:3000/graphql

И ответ будет выглядеть так:

{
  "data": {
    "count": 0
  }
}

Просто используйте библиотеку запросов, которую вы используете на клиенте, чтобы обратиться к клиенту REST, но измените ее, чтобы она соответствовала API сервера GraphQL, к которому вы пытаетесь подключиться.

person Alex Anderson    schedule 01.06.2017
comment
Я думал, что это опустит силу самоанализа. - person 林东吴; 25.08.2017
comment
Как я могу собрать запрос graphql из шлюза graphql? - person 林东吴; 25.08.2017

На самом деле, я думаю, что это работа разрешения функции для взаимодействия с вашими микросервисами. Для получения дополнительной информации вы должны взглянуть на GraphQL и архитектуру микросервисов.

person anhldbk    schedule 19.07.2017