※ 아래 기술하는 구조들은 Query뿐만 아니라 node.js 등 다른 javascript 문법구조의 기본이 될 수 있으므로, 잘 기억하고 있어야 한다.
보통 javscript 내 사용되는 함수는, 아래와 같이 함수활용과 이에 대한 선언(정의)이 이루어져야 하는 구조이다.
const sum = add(1,2)
function add(value1, value2) {
return value1 + value2
}
Query도 이와 유사한 구조로 사용되며,
아래는 코드 예시이다.
type 선언
type Query {
WhatisPersonProperty : [Person]
}
type Person {
name : String!,
favoriteNumber : Int!,
favoriteFood : String!
}
Resolver
const resolvers = {
Query{
WhatisPersonProperty : () => Person
}
}
const Person [
{
name : "LEE Hyo Kyun",
favoriteNumber : 7,
favoriteFood : "rice"
}
]
GraphQl에서 Query를 사용하기 위해 미리 "설계도"를 그려놓는다 → type
GraphQL의 Query를 설계한대로 사용하여 data를 얻고자, 실질적으로 사용하는 data 확보도구 → resolver
type Query {
WhatisPersonProperty : [Person]
}
type Person {
name : String!,
favoriteNumber : Int!,
favoriteFood : String!
}
const resolvers = {
Query{
WhatisPersonProperty : () => Person
}
}
const Person [
{
name : "LEE Hyo Kyun",
favoriteNumber : 7,
favoriteFood : "rice"
}
]
위 코드에서 나타난 Query의 특징은 다음과 같다.
마찬가지로 아래와 같은 특징도 포함된다.
여기서 중요한 점은
type을 통해 선언된 return 객체 및 이름은 동시에 이루어진 형태인 점,
- return은 배열형태이며
- 그 배열은 person이라는 이름으로 사용가능하다.
이는 기존 python과 같이 함수지향적인 프로그래밍에 익숙하면 조금 헷갈릴 수 있는 부분으로, 객체지향 프로그래밍을 이해하고 구조를 살펴보는데 가장 중요한 부분 중 하나이다.
이 부분에 익숙해져서 Query 작성 / javascript 작성에 익숙해지도록 하자.