코딩 하는 가든

springboot + graphql 시작하기(1) - 프로젝트 구조에 대해 알아보기 본문

프로젝트/N poem

springboot + graphql 시작하기(1) - 프로젝트 구조에 대해 알아보기

가든리 2020. 5. 13. 21:49

[n poem]springboot + graphql 시작하기

[주의] 이 글은 스프링 부트 에서 Graphql의 요청을 처리하는 인터페이스 계층인 Datafetcher와 Resolver 중 Resolver를 사용합니다.

 

 스프링 부트 + 그래프 큐엘 프로젝트를 하기에 앞서 보통의 스프링 프로젝트의 구조를 살펴보자. 아래의 프로젝트는 N poem 프로젝트를 진행하기에 앞서 혼자 진행했던 스프링 게시판 만들기의 프로젝트 구조이다.

 

패키지는 크게 Domain / Service / Controller 계층으로 나뉜다. 

 

- Controller : API의 엔드포인트를 정의하는 인터페이스 계층

- Service : 실제 비지니스 로직이 실행되는 계층

- Domain : 도메인 모델을 정의하는 계층

 

 

graphql이 rest api와 다른 점은 물론 많은 부분이 있겠지만 크게 보면 graphql의 api endpoint는 단 하나라는 것이다.

(그래프 큐엘이 뭔지 모른다면... 여기 를 참고)

 

그리고 graphql은 요청을 resolver라는 함수에서 받아 로직을 수행한 뒤 돌려준다.

단순하게만 생각하면 사실 기존의 Controller 계층이 Resolver라는 계층으로 바뀌면 된다는 것이다.

Domain / Service / Controller 에서 Domain / Service / Resolver의 구조로 바뀌면 된다.

 

Graphql의 요청은 Query 타입과 Mutation 타입으로 나뉘게 되는데 쉽게 생각해서

Query는 GET 요청, POST, PUT, DELETE 요청 등은 Mutation이라고 생각하면 된다.

 

Graphql은 들어온 요청을 해석하기 위하여 SDL (스키마 정의 언어)를 정의해야 하는데 resoureces/graphql 디렉토리에 *.graphqls (확장자 명이 graphqls) 를 만들어 주면 된다. (Datafetcher를 사용한다면 *.graphql)

 

프로젝트의 구조를 대강 파악했다면 다음으로 SDL을 어떻게 정의하는지 알아보도록 하겠다.