You will be fine

<GraphQL> 1. 설정하기 with Spring Boot

by BFine
반응형

가. 설정하기 

 a. Gradle 

   implementation 'com.graphql-java-kickstart:graphql-spring-boot-starter:12.0.0'
   testImplementation 'com.graphql-java-kickstart:graphql-spring-boot-starter-test:12.0.0'

  -  graphql-java-kickstart  오픈소스로 관리되고 있다. 

     => https://github.com/graphql-java-kickstart/graphql-spring-boot

 

GitHub - graphql-java-kickstart/graphql-spring-boot: GraphQL and GraphiQL Spring Framework Boot Starters - Forked from oembedler

GraphQL and GraphiQL Spring Framework Boot Starters - Forked from oembedler/graphql-spring-boot due to inactivity. - GitHub - graphql-java-kickstart/graphql-spring-boot: GraphQL and GraphiQL Spring...

github.com

 

 b. Spring Boot

  -  기본적으로 defalut 설정이 잘되어있기 때문에 크게 설정할 부분은 없다.

  -  kickstart의 graphql-spring-boot-starter는 4가지의 Graphql Tool들이 내장되어있어 필요한 Tool을 Enable해서 사용하면 된다.

 

나. 기본 Query 만들기

 a. schema 만들기

  -  graphpql은 일반적으로 graphpqls 파일(확장자 주의)을 이용해 명세를 작성한다. (default schema 위치는 아래와 같다.)

  -  여기서 type은 객체와 대응하지만 필요한 필드만 작성할수도 있고 또한 !표시는 null 값을 허용하지 않는다는 의미로 사용할 수 있다.

  -  당연한 부분이지만 Member 객체에 없는 필드를 추가할 경우 런타임 예외가 발생한다. 

  -  여기서 echoMember는 메서드에 대응하며 괄호안에는 메서드의 파라미터에 대응한다. 그리고 끝에 : 뒤에는 반환 값을 나타낸다.

 

 b. Java code

@Builder
public class Member {
    private Integer id;
    private String name;
}
@Component
public class MemberResolver implements GraphQLQueryResolver {

    public Member echoMember(Integer id, String name){
        return Member.builder()
                .id(id)
                .name(name)
                .build();
    }
}

  -  여기서 중요한 부분은 GraphQLQueryResolver 인터페이스로 클라이언트에서 Query가 들어오면 이를 해석하여 대응하는 메서드를 실행하는 역할을 한다.

  -  이렇게 해서 간단하게 graphql API를 만들 수 있다. REST API는 다르게 @RestController@GetMapping을 번거롭게 지정해주지 않아도 된다.

 

 c. Query 실행하기 

  -  방금 전 enable 설정했던 tool 중에 playground 를 사용하여 테스트 해보자 

  -  왼쪽이 클라이언트에서 요청하는 부분으로 위의 이미지처럼 Query를 작성하여 서버로 요청 할수가 있다. 

  -  그리고 파라미터나 리턴값의 데이터를 클라이언트의 목적에 맞게 query를 변형해서 쓸 수 있다.

  -  id는 null을 허용하지 않기 때문에 오류가 발생하는데 graphql이 유효성 체크를 하며 관련 오류 내용을 응답하는 것을 볼 수 있다.

 

 d. Voyager  

  -  graphiql, altair, playground는 모두 grahpql 쿼리 실행 및 graphql 파일을 감지해서 Docs를 보여주는 기능을 한다.
  -  voyager는 graphql의 그래프를 보여주 해서 연관관계를 쉽게 파악할 수 있기 때문에 위의 tool 중 하나와 함께 사용하면 좋을 것 같다.  

반응형

블로그의 정보

57개월 BackEnd

BFine

활동하기