구조
Query
// 쿼리
{
hero {
name
friends {
name
}
}
}
// 결과
{
"data": {
"hero": {
"name": "R2-D2",
"friends": [
{
"name": "Luke Skywalker"
},
{
"name": "Han Solo"
},
]
}
}
}
🔨 프래그먼트
- 복잡한 데이터 요구사항을 작은 단위로 분할하기 위해 사용하는 재사용 가능한 단위
- 프래그먼트를 이용, 필드셋을 구성해 쿼리에 포함시킬 수 있다.
- 청크가 다른 여러 UI 구성 요소를 하나의 데이터 fetch로 통합할 때 많이 사용!
🛠 지시어
- 쿼리 구조와 형태를 동적으로 변경하기 위해 사용한다.
- 필드나 프래그먼트 안에 삽입될 수 있다.
- 종류
- @include(if: Boolean) : 인자가 true인 경우에만 결과에 필드 포함
- @skip(if: Boolean) : 인자가 true인 경우에만 이 필드 건너뜀
Mutation
- 데이터 변조 역할
create
, update
, delete
수행
- 쿼리도 데이터를 수정할 수 있지만, 변조 작업은 뮤테이션을 통해 전송되어야 한다는 규칙을 지키는게 좋다!
🎃 다중 필드
- 쿼리 필드는 병렬로 실행되지만, 뮤테이션 필드는 하나씩 차례로 실행된다.
mutation CreateReviewForEpisode($ep: Episode!, $review: ReviewInput!) {
createReview(episode: $ep, review: $review) {
stars
commentary
}
}
// variables
{
"ep": "JEDI",
"review": {
"stars": 5,
"commentary": "This is a great movie!"
}
}
// 결과
{
"data": {
"createReview": {
"stars": 5,
"commentary": "This is a great movie!"
}
}
}