2016-10-12 4 views
1

저는 현재 "클라이언트 측 GraphQL 서버"를 사용하여 RESTful 끝점을 GraphQL 끝점으로 래핑했습니다.GraphQL을 계단식으로 연결하는 방법은 무엇입니까?

하지만 서버 측도 GraphQL 종점이라면 어떻게 될까요? 가벼운 방법으로 다른 GraphQL 서버를 GraphQL 서버에 대기시킬 수 있습니까?

또는 더 일반적으로 GraphSQL 서버 "A"와 "B"가 마이크로 서비스를 제공하는 경우 GraphQL 서버 "C"를 사용하여 "A"와 "B"를 통합합니다. apollo-client를 사용하여 "C"에서 "A"와 "B"를 대기열로 사용하는 일종의 "서버 측 클라이언트"를 사용해야합니까?

+0

지금 당장은이 방법을 잘 모르지만 GitHub에 대한 의견이 있습니다. https://github.com/graphql/graphql- js/issues/490 – stubailo

+0

** 실제 사용 사례 ** : Neo4j는 이제 Neo4j-GraphQL Extension에서 GraphQL API를 내보낼 수 있습니다. PostgreSQL이 다른 GraphQL API를 내 보내면 GraphQL의 단일 소스로 작성하는 것이 문제가됩니다. –

답변

1

나는 클라이언트 측 GraphQL이 그런 식으로 사용 된 것을 본 적이 없지만 평소와 같이 작동한다고 상상합니다. 데이터를 반환하는 리졸버 (resolver)에 대한 쿼리가 있습니다. 이 경우 REST API 요청 대신 GraphQL 요청을 사용하지만 원칙은 동일합니다.

GraphQL은 다른 API와 다르지 않습니다. URL 끝점 (GraphQL, URL은 항상 동일)에 HTTP 요청 (GraphQL, 모든 요청 POST)을 보내고 요청과 함께 매개 변수 데이터를 전송합니다 (GraphQL을 사용하면 전체 쿼리가 진행됩니다).

클라이언트 GraphQL 쿼리의 변수를 서버 GraphQL 쿼리의 변수로 변환하고 그런 식으로 쿼리를 구성 할 수 있다고 상상해보십시오.

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

을 그리고 응답은 다음과 같이 보일 것이다 : 컬

,이 같은 형식으로 조회 할 수 있습니다

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

그냥 당신이 클라이언트에서 사용하는 요청 라이브러리를 사용 REST 클라이언트를 누르지 만 도달하려는 GraphQL 서버의 API와 일치하도록 수정하십시오.

+0

내성의 힘을 생략 할 것이라고 생각했습니다. –

+0

graphql 게이트웨이에서 graphql 쿼리를 어떻게 어셈블 할 수 있습니까? –

관련 문제