본문 바로가기
  • 분조장의 개발 블로그

GraphQL4

Spring Boot서버에서 GraphQL요청 처리하기 Spring Boot 서버에서 GraphQL 요청을 처리하는 방법으로 두 가지 방법을 소개하겠습니다. 아래 두 가지 방법은 공통적으로는 아래 처럼 작동합니다. 사용하는 의존성에 따라 구체적인 방법이 조금 다를 뿐입니다. GraphQL의 쿼리문이 Resolver 구현체의 메서드로 매핑되고 요청 및 응답에 사용되는 GraphQL 타입이 java의 dto 객체에 매핑됩니다. Resolver는 기존 controller의 역할을 수행한다고 보면 되며, endpoint(요청 주소)에 따라 구분하지 않고 query 및 mutation의 요청을 구분하거나 복잡한 요청 을 구현하는 대상에 따라 구분합니다. 1. Resolver를 구현하여 처리하기(kickstart 의존성 사용) Resolver를 구현하여 데이터를 처리하.. 2021. 5. 17.
Spring Boot에서 GraphQLResolver<T> 사용하기 Resolver 유형 Spring Boot에서 GraphQL 쿼리 요청을 처리하기 위해선 세 유형의 Resolver(interface타입)을 구현할 수 있습니다. GraphQLResolver query, mutation 요청 구현 스키마의 input 타입에 대하여 보다 복잡한 요청이 필요할 때 사용 GraphQLQueryResolver query 요청을 담당 GraphQLMutationResolver mutation 요청을 담당 그런데 GraphQLResolver의 복잡한 요청이란 무엇일까요? 나머지 두 Resolver 와 어떻게 다른 걸까요? GraphQLResolver 알아보기 예시) GraphQL 스키마 type Person { name: String! age: Int complexValue: In.. 2021. 5. 17.
GraphQL 명명 Convention GraphQL이 특정 명명 지침을 지정하진 않았지만 Apollo-server에서 일관성을 위해 권장하는 명명규칙이 있다. 이런 규칙을 사용하면 대부분의 클라이언트가 서버에서 반환되는 결과를 변환하기 위해 추가 로직을 정의할 필요가 없다고한다! 링크 > Apollo-server Doc 참고 자료형 명명규칙 필드 - 이름 camelCase 형식 - 이름 PascalCase 열거형 - 이름 PascalCase 열거형 - 값 ALL_CAPS(모두 대문자) 예시 # 필드 이름: addBook (camelCase) # 형식 이름: String, Book (PascalCase) type Mutation { addBook(title: String, author: String): Book } # 열거형 이름: Allow.. 2021. 5. 17.
GraphQL 사용하면서 느낀 장단점(+ Spring Boot) GraphQL이란? Facebook에서 개발한 Api를 위한 쿼리 언어다. Api에 있는 데이터에 대해 이해하기 쉬운 설명을 제공하고 client에게 필요한 것을 정확하게 요청할 수 있는 기능을 제공한다. 장점 Rest Api의 단점인 Underfetching, Overfetching 해결 가능 Underfetching 기존의 Rest Api에선 다른 두 세개의 api들을 호출해야 얻을 수 있는 정보가 있으면 필요한 만큼 api를 호출하고 추가적으로 가공해야했다. GraphQL에선 한 번의 호출로 원하는 데이터를 얻을 수 있게 된다. Overfetching 기존의 Rest Api에선 api 호출 시 필요 이상의 정보를 전달받는 문제가 있었다. GraphQL은 client에서 필요한 데이터만을 요청하므로 .. 2021. 5. 17.