이들은 세 가지 operation 타입으로, 각각 schema의 root 타입에 매핑됩니다:
- Query — 데이터를 읽습니다. 필드는 병렬로 실행되며 (HTTP GET처럼) 부수 효과가 없어야 합니다.
- Mutation — 데이터를 씁니다(생성/수정/삭제). 최상위 필드는 실행되므로 순서가 보장됩니다.
이들은 세 가지 operation 타입으로, 각각 schema의 root 타입에 매핑됩니다:
query GetPost { # read
post(id: "1") { title }
}
mutation AddComment { # write; returns the created object so the client updates its cache
addComment(postId: "1", text: "Nice!") {
id
text
}
}
subscription OnComment { # live: fires every time a comment is added
commentAdded(postId: "1") {
id
text
}
}
Mutation은 인자(보통 input 객체)를 받고, 클라이언트가 두 번째 요청 없이 갱신할 수 있도록 영향받은 데이터를 반환해야 합니다. 순차 규칙은 중요합니다: 한 문서 안의 두 mutation — deposit 다음 withdraw — 은 항상 그 순서로 실행되지만, 두 query 필드는 동시에 resolve될 수 있습니다.
면접관은 여러분이 query는 병렬이고 부수 효과가 없는 반면 mutation은 순차적이라는 것과, subscription에는 상태를 유지하는 transport(WebSocket/SSE)가 필요하다는 것을 아는지 확인합니다. mutation에서 갱신된 데이터를 반환하는 것은, GraphQL을 실제로 출시해 본 사람과 글로만 읽은 사람을 가르는 실무적인 디테일입니다.
주니어부터 시니어까지 상세한 답변이 포함된 IT 면접 질문 라이브러리.
후원하기