GraphQL 격자 및 Hasura 원격 연결을 사용하여 데이터 맵 만들기


이 글은 우리Remote Joins 시리즈의 일부분이다.Hasura의 원격 연결은 테이블과 원격 데이터 원본에서 데이터를 연결할 수 있습니다.Hasura 원격 연결을 사용하는 데이터 연합은 현재 v1에서 얻을 수 있습니다.3.0 안정적인 버전.
Hasura Cloud에서 당신의 생각을 우리에게 알려 주세요!
GraphQL Mesh와 Hasura 원격 연결을 사용하여 데이터 맵 만들기
데이터는 통상적으로 서로 다른 서비스에서 나온다.GraphQL Mesh에서는 GraphQL 쿼리 언어를 사용하여 원격 API의 데이터에 액세스할 수 있습니다.원격 API는 스웩거/openapi, oData, gRPC, SOAP 등이 될 수 있다.
GraphQL Mesh는 다른 서비스의 게이트웨이로 사용할 수도 있고 로컬 GraphQL 모드로 실행할 수도 있으며 이 모드는 원격 API에서 나온 데이터를 집합한다.
이 예에서 GraphQL Mesh에서 만든 API 소스를 Hasura의 원격 모드로 추가하는 능력을 연구할 것이다.더 나아가 Hasura의 GraphQL API와 GraphQL Mesh를 통해 획득한 API 사이에 관계를 맺으려고 시도합니다.
GraphQL 격자는
  • 노드의 SDKjs 코드
  • GraphQL API용 게이트웨이
  • Mesh를 게이트웨이로 사용하는 방법을 연구하여 하나의 단점을 공개할 것입니다. 이 단점은 Hasura의 원격 모델로 추가할 수 있습니다.

    GraphQL 그리드 프로젝트 초기화


    우리는 yarn를 사용하여 새로운 프로젝트를 초기화할 수 있다.
    yarn init -y
    yarn add graphql @graphql-mesh/cli @graphql-mesh/openapi
    
    
    mesh CLI를 설정하고 openapi 클라이언트를 추가하고 있습니다.
    데이터 소스를 지정하는 구성 파일.meshrc.yml을 만들고 통화 개방 API를 추가합니다.
    sources:
      - name: CurrencyOpenAPI
        handler:
          openapi:
            source: <path-to-open-api-schema.json>
    
    Download the Open API Spec 소스 경로를 적절하게 교체합니다.이것은 https://api.exchangerate-api.com/v4에 제공된 API 사양입니다.

    GraphQL 그리드 실행


    다음 명령을 사용하여 GraphQL 메쉬 인스턴스를 실행합니다.
    yarn mesh serve
    
    
    이렇게 하면 http://localhost:4000에서 GraphQL API가 실행됩니다.
    이를 Hasura 클라우드 프로젝트에 원격 모드로 추가하려면 공공 엔드포인트에 배치해야 합니다.Codesandbox를 사용해 보겠습니다.
    <--kg 카드 끝: html-->
    위의 노드를 사용하여 새 모래함/갈라짐을 만들 수 있습니다.js를 mesh 프로필에 넣습니다.
    Hasura 클라우드 프로젝트에서 코드sandbox에서graphql 단점을 추가합니다.위의 예에서 그것은 https://00e5c.sse.codesandbox.io/graphql 일 것이다.필요하면 샌드박스 URL으로 교체하십시오.
    알겠습니다. 현재 GraphQL Mesh를 설정하여 기존의 OpenAPI 규범을 바탕으로 GraphQL API를 제공할 수 있도록 합니다.
    원격 모드로 GraphQL 그리드 끝점 추가

    GraphQL 쿼리 시도


    query {
      getLatestBaseCurrency(baseCurrency: "USD") {
        base
        date
        rates
        timeLastUpdated
      }
    }
    
    
    기본 OpenAPI에 대한 GraphQL 쿼리
    이는 기본 통화 API에서 데이터를 가져옵니다.

    Mesh와의 원격 관계


    가령 우리가 users표를 하나 가지고 있는데 그 중에서 id,namecurrency열이 있다.currency_rates표 내부에 users라는 원격 관계를 추가합니다.
    GraphQL 격자와의 원격 관계
    이제 단일 API 호출에서 이 데이터를 가져오는 GraphQL 질의는 다음과 같습니다.
    query {
      users {
        id
        name
        currency
        currency_rates {
          date
          rates
        }
      }
    }
    
    플러그인 쿼리 currency_rates 는 OpenAPI 규범에 따른 환율 API에서 나온 것입니다. 현재 사용자 화폐와 관련된 환율만 users.currency = currency_rates.baseCurrency 필터를 적용합니다.
    이전에 우리는 OpenAPI to GraphQL 라이브러리를 통해 화폐 API를 직접 사용하고 그곳에서 시범을 보였다.GraphQL 격자를 통해 이 방법을 사용하는 장점은 현재 이 격자에 여러 개의 원본을 추가할 수 있고, 이 모든 동원되지 않은 조합에 GraphQL 단점을 얻을 수 있다는 것이다.

    원격 모드로 GraphQL 격자를 사용해야 합니까?


    네, 프런트엔드 클라이언트는 보통 Hasura의GraphQL 단점을 조회하고GraphQL 격자는 원격 모드로 추가하여 다른 데이터 원본을 에이전트하는 방식으로 사용할 수 있습니다.Hasura는 GraphQL API 위에 있는 깔끔한 성명 권한 수여층을 제공하기 때문에 작성해야 할 코드가 훨씬 적습니다.이것은 하수라를 격자 내부 ORM으로 사용하는 모든 행위가 이러한 장점을 잃게 된다는 것을 의미하며, GraphQL 격자를 원격 모드로 사용하는 것을 강력히 권장합니다.
    올해 초 graphql mesh의 창립자인 Uri Goldshtein은 Hasura Con에서 Hasura와 graphql mesh가 어떻게 결합되고 일련의 원격 API 원본으로 통하는 인터페이스가 되는지 토론했다.다음 보기:
    github repo의 여러 가지 examples 를 보십시오. 원격 원본으로GraphQL Mesh에 추가할 수 있고 Hasura를 통해 조회할 수 있습니다.
    커뮤니티에는 사용에 관한 블로그도 한 편 있다.반드시 검사해야 한다.
    GraphQL Mesh의 전형적인 용례가 무엇인지, 그리고 Hasura와 어떻게 협조하는지 꼭 댓글로 알려주세요.

    좋은 웹페이지 즐겨찾기