Graphql
-
GraphQL에 대하여 ( Resolver & Dataloader / Aliases & Fragment)Graphql 2023. 6. 3. 12:11
2023.05.07 - [Graphql] - GraphQL에 대하여 (Interface & Union Type) GraphQL에 대하여 (Interface & Union Type) 2023.04.23 - [Graphql] - GraphQL (Schema & Type) 에 이어서 interface & union type에 대해 설명하고자 한다. Interface 다른 많은 타입 시스템처럼 GraphQL은 interface를 지원한다. 인터페이스는 Type이 무엇 인가를 구현 zzihyeon.tistory.com 에 이어서 포스팅 하고자 한다. Resolver GraphQL에서 Resolver는 쿼리의 각 필드에 대한 데이터를 제공하는 함수이다. Resolver는 GraphQL 서버에서 데이터를 가져오는 데..
-
GraphQL에 대하여 (Interface & Union Type)Graphql 2023. 5. 7. 00:59
2023.04.23 - [Graphql] - GraphQL (Schema & Type) 에 이어서 interface & union type에 대해 설명하고자 한다. Interface 다른 많은 타입 시스템처럼 GraphQL은 interface를 지원한다. 인터페이스는 Type이 무엇 인가를 구현하기 위해 포함해야 하는 특정 필드 집합을 포함하는 추상 Type입니다. 이 말로는 어려울 수 있으니 계속 사용하던 User를 이용해 예제를 만들어 확인해보도록 하자. 예를 들어, 쇼핑몰 시스템의 User에 Admin, Seller, Buyer 3가지 종류가 있고 아래와 같은 의미를 지닌다고 생각하자 Admin: 시스템을 관리하는 User Seller: 판매를 위해 상품을 등록하고 정산을 받는 User Buyer:..
-
GraphQL (Schema & Type)Graphql 2023. 4. 23. 11:06
2023.04.16 - [Graphql] - GraphQL이란에 이어서 GraphQL에 대해 더 알아보도록 하겠다. 지금까지는 Rest API를 대체할 수 있는 무언가가 있고 그게 GraphQL이 될 수 있다 까지 생각할 수 있다. 지난 글에서는 아래와 같이 GraphQL에 대한 두 가지 장점이 있었다. Schema를 정해 데이터의 일관성을 보장할 수 있다. Client에서 필요한 data만을 요청하기에 overfetching을 줄일 수 있다. 그럼 이제부터 GraphQL에 대해 더 자세히 알아보도록 하자. Schema & Type 우선 설명에 앞서 아래와 같은 User에 대한 예시 Shema을 작성하겠다. #user.graphqls #enum type 선언 enum Gender { MALE FEMALE..
-
GraphQL이란Graphql 2023. 4. 16. 22:19
GraphQL이란 GraphQL은 Facebook에서 개발된 오픈소스 기술로 데이터 질의 (Query + Schema) 언어이다. 클라이언트는 GraphQL 서버로 쿼리를 전송하고, 서버는 해당 쿼리를 해석하고 데이터를 반환한다. 이 때, 클라이언트가 요청한 필드만 반환되므로 over fetching을 줄여 효율적이다. 또한, GraphQL은 스키마를 사용하여 데이터 모델을 정의하기 때문에 클라이언트와 서버 간의 일관성 있는 데이터 통신을 보장한다. 이를 통해 클라이언트가 서버가 제공하는 데이터 중 원하는 데이터를 가져오는 것이 가능해집니다. GraphQL vs Rest API Rest API는 HTTP 요청방식 (GET, POST, PUT DELETE 등)을 사용하여 데이터를 요청하고 응답받는다. 이 ..
-
DataLoaderGraphql 2022. 10. 9. 13:50
기본적으로 graphQL에 대해 어느정도 알고 있다고 생각하고 작성하겠다. DataLoader란 graphQL에서 Resolver를 사용할 때 N+1 문제가 생긴다. N+1 문제란 요청은 한번만 했지만 Resolver에 의해 N번의 트랜젝션이 발생할 수 있는 것이다. 예를 들면, user, purchase, stuff 이 3개의 table이 있다고 가정해보고 gql 타입을 아래와 같이 정의했다고 가정하자. type User { id: String! name: String! email: String! purchases: [Purchase] # purchase를 조회하기 위한 Resolver가 있음 } type Purchase { id: String! total_price: Int! date: Time! s..