본문 바로가기
Apollo GraphQL Prisma

인스타그램 클론코딩 BACKEND 만들기 #5 - POC API : 객체 타입과 필드, 인자

by 정정훈의 아날로그 2021. 6. 16.

객체 타입 이란?

GraphQL 스키마의 가장 기본적인 구성요소이다.

1
2
3
4
type Character {
  name: String!
  appearsIn: [Episode]!
}
cs
  • Character  GraphQL 객체 타입 입니다. 즉, 필드가 있는 타입입니다. 스키마의 대부분의 타입은 객체 타입입니다.
  • name  appearIn  Character 타입의 필드 입니다. 즉 name  appearIn 은 GraphQL 쿼리의 Character 타입 어디서든 사용할 수 있는 필드입니다.
  • String 은 내장된 스칼라 타입 중 하나입니다. 이는 스칼라 객체로 해석되는 타입이며 쿼리에서 하위 선택을 할 수 없습니다. 스칼라 타입은 나중에 자세히 다룰 것입니다.
  • String! 은 필드가 non-nullable 임을 의미합니다. 즉, 이 필드를 쿼리할 때 GraphQL 서비스가 항상 값을 반환한다는 것을 의미합니다. 타입 언어에서는 이것을 느낌표로 나타냅니다.
  • [Episode]!  Episode 객체의 배열(array) 을 나타냅니다. 또한 non-nullable 이기 때문에 appearIn 필드를 쿼리할 때 항상(0개 이상의 아이템을 가진) 배열을 기대할 수 있습니다.

 

인자

GraphQL 객체 타입의 모든 필드는 인자를 가질수 있다.

1
2
3
4
5
type Starship {
  id: ID!
  name: String!
  length(unit: LengthUnit = METER): Float
}
cs
  • length 필드는 하나의 인자 unit 을 가집니다.
  • 인자는 필수거나 옵셔널일 수 있습니다.
  • 인자가 옵셔널인 경우 기본값 을 정의할 수 있습니다.
  • unit 인자가 전달되지 않으면 기본적으로 METER 로 설정됩니다.