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 격자는
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
,name
와 currency
열이 있다.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와 어떻게 협조하는지 꼭 댓글로 알려주세요.
Reference
이 문제에 관하여(GraphQL 격자 및 Hasura 원격 연결을 사용하여 데이터 맵 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/hasurahq/creating-a-data-graph-with-graphql-mesh-and-hasura-remote-joins-3k75텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)