Skip to content

Latest commit

 

History

History
61 lines (44 loc) · 1.8 KB

실행.md

File metadata and controls

61 lines (44 loc) · 1.8 KB

실행

  • 동기 / 비동기 모두 가능

  • 유효성검사를 한 후, GraphQL 쿼리는 GraphQL 서버에서 실행되어, 요청된 쿼리와 똑같은 형태의 결과를 반환합니다. 일반적으로 JSON 형태입니다.

  • 타입의 각 필드는 GraphQL 서버개발자가 만든 resolver 함수에 의해 실행됩니다. 필드가 실행되면 해당 resolver 가 호출되어 다음 값을 생성합니다.

  • 하지만 필드가 객체를 반환하면 쿼리는 해당 객체에 적용되는 다른 필드들을 포함하게됩니다. 이는 스칼라 값에 도달할 때까지 반복됩니다.

루트 필드

  • 최상위 타입: Root 타입 또는 Query 타입
resolver(obj, args, context, info) {}
  • resolver 함수는 네 개의 인수를 받습니다.
    • obj: 대부분 사용되지 않는 루트 Query 타입의 이전 객체.
    • args: GraphQL 쿼리의 필드에 제공된 인수.
    • context: 모든 resolver 함수에 전달되며, 현재 로그인한 사용자, 데이터베이스 액세스와 같은 중요한 문맥 정보를 보유하는 값.
    • info: 현재 쿼리, 스키마 정보와 관련된 필드별 정보를 보유하는 값. 자세한 내용은 type GraphQLResolveInfo 참조.

비동기 resolvers

Q) GraphQL은 Promises, Futures, Tasks 가 완료될 때까지 기다렸다가 효율적으로 동시에 처리합니다. -> 그럼 하나의 쿼리에 여러 비동기 요청을 보내게 되면, 해당 쿼리들이 다 완성되기 전까지는 늦게 response 받게 되겠군

type Query {
  human(id: ID!): Human
}

type Human {
  name: String
  appearsIn: [Episode]
  starships: [Starship]
}

enum Episode {
  NEWHOPE
  EMPIRE
  JEDI
}

type Starship {
  name: String
}

{
  human(id: 1002) {
    name
    appearsIn
    starships {
      name
    }
  }
}