Schema와 Resolver 등록해서 사용해보기

2018. 11. 20. 06:58javascript/node.js - Graphql

Schema와 Resolver 만들어서 사용해보기 


이전에 서버 기초적인 코드를 짰는데 실행시키니 Schema Not Defined라는 오류가 발생했습니다. Schema가 정의 되어 있지 않다는 뜻인데요. 


이번에는 Schema를 등록시켜보고 그에 대응하는 Resolver를 등록하여 사용해보겠습니다. Schema에 명세 해놓은 것과 Resolver의 이름이 같아야합니다. 


우선 Schema.graphql이라는 파일을 만들어서  typeDefs에 등록해줍니다. 


그리고 schema.graphql을 켜봅니다, 그리고 쿼리 값 하나를 정의합니다. 오른쪽에 String은 이 쿼리의 반환타입이 String이라고 정의 해놓은 것입니다. 




그 다음에는 Resolver.js(파일 이름은 상관없습니다.)를 만들어줍니다. 그리고 아래와 같이 작성해줍니다. 그리고 스키마와 같이 Resolver는 이름이 같아야합니다. 

여기도 보면 firstSchema와 같이 해줍니다. 




그리고 아래와 같이 GraphQLServer에 등록해줍니다.



그럼 서버가 정상 실행되는 것을 볼 수 있습니다.  


그리고 이 주소로 http://localhost:4000/ 접속하게 되면 PlayGround라는 것이 나옵니다. 여기서 우리가 작성한 쿼리문이 잘 작동하는지 확인 할 수 있습니다. 

우리가 만든 firstSchema가 잘작동하는지 확인합시다. 


입력 


출력 


잘작동하네요 ㅎㅎ


그럼 이번에는 다른 형식으로 쿼리문에 파라미터를 전달하여 결과 값을 보여주도록 하죠!! 


Schema.graphql 파일


Resolver.js

첫번째 인자에 _있는데 이는 this를 뜻합니다. _ 현재 Object를 뜻합니다. 


이를 Playground에서 실행시켜보면

입력



출력



이번에는 Schema에 자기가 만든 타입을 만들어서 반환시켜 보겠습니다. 



: 옆에 반환 타입이 적혀있습니다. type Movie를 정의 해놓은 것을 보면 안에 id, title, description들이 있고 이를 반환하게 만들 수 있습니다. 


그리고 Resolver에 아래와 같이 정의해보겠습니다. 



이를 Playground에서 호출해보겠습니다. 


여기서 중요한 것이 GraphQL은 다른 Rest와 다르게 자기가 필요한 데이터만 골라서 받아올 수 있었습니다. 그러므로 위에 상황에서 id없이 title만 받아 온다 던지 description만 받아오는 것이 가능합니다. 


반환 값 




title만 받아오기


반환값 


여기서 보는 것과 같이  GraphQL은 RESTAPI와 달리 자기의 상황에 맞게 필요한 정보만 받아 올 수 있어서 효율적으로 데이터를 가져 올 수 있다. 















 


'javascript > node.js - Graphql' 카테고리의 다른 글

Mutation 사용하기  (0) 2018.11.20
Graphql을 왜 해야할까요??  (0) 2018.11.20
Graphql 시작하기  (0) 2018.11.19