본문 바로가기
관리자

Programming-[Backend]/graphQL

4. graphQL 서버 기본 작성법 : schema, resolver

728x90
반응형

목표

기본적인 graphql 서버 작성법과 동작과정을 학습해본다.

 


구성

아래 그림과 같이 graphql 폴더에 resolver.js와 schema.graphql 파일을 작성하였다.

 

 

schema.graphql 파일

여기서는 DB를 작성하는 것처럼 데이터의 항목과 종류를 정의한다. type : Query 문으로 모든 query가 집중되고, 각 데이터를 각각의 type에서 뽑아내는 형식으로 이해했다.

 

아래의 사진에서 보면, type Query 아래에 person : Person! 으로 정의된 것을 볼 수 있다.

이것은 query문으로 person 객체에 대한 요청이 오면, type Person에 대한 내용을 전달해준다는 의미를 갖는다.

 

데이터 항목의 각 값에 형식이 정해져있고, '!' 표시가 있는 것을 볼 수 있다. 데이터 형식을 지정하고, 쿼리 요청 시 필수항목으로 지정하는 것이다. 만약 String으로 표기된 항목에 Int 항목을 요청하면 에러가 뜨면서 정상적인 응답을 받아오지 못하게 된다.

 

정확한 이해는 다음의 resolver.js와 함께 이해하면 좋다.

 

resolver.js

resolver는 nodejs에서 서버의 응답 부분과 데이터가 함께 포함된 구조라고 보면 된다.

아래 그림의 7~11번 줄에서 resolver를 정의하고 Query.person 으로 요청이 왔을 때 user 객체를 응답으로 주도록 작성한다.

또한 1~5번 줄에서 user 객체의 정보를 정의한 것을 볼 수 있다. 즉 schema에 표현된 정보의 실제 객체 데이터를 작성하고, 그것을 쿼리에 따라 응답으로 보내주는 역할을 한다.

 


구현

graphql yoga 에서 localhost:4000 의 graphql playground를 제공한다.

>>npm start로 서버 실행 후 localhost:4000 으로 접속하면 graphql playground가 실행되는 것을 확인할 수 있다.

이것은 마치 postman과 같은 것으로 network tab에 가서 보면, 계속해서 post 신호를 날리고 있음을 알 수 있다.

 

graphql 및 resolver를 알맞게 작성하고, graphql playground로 실행해보면 응답 data 객체가 

data.person { } 으로 전송되어 옴을 확인할 수 있다.

 

브라우저에서 서버 스키마 바로 확인

위 사진의 우측에 SCHEMA 버튼이 있는 것을 확인할 수 있는데, 브라우저 상에서 각 Schema의 형태와 데이터 타입을 바로 확인할 수 있다. 편리한 기능이다!

 

728x90
반응형