인터페이스란?
인터페이스
는 이를 구현하기 위해 타입이 포함해야하는 특정 필드들을 명시하는 추상 타입이다.
여러 타입 시스템과 마찬가지로 GraphQL도 인터페이스를 지원합니다.
예를 들면, Star Wars 3부작의 모든 캐릭터들을 표현하는
Character
인터페이스를 가질 수 있습니다.interface Character { id: ID! name: String! friends: [Character] appearsIn: [Episode]! }
이는
Character
를 구현한(implements) 모든 타입은 이러한 인자와 리턴 타입을 가진 정확한 필드를 가져야한다는 것을 의미합니다.인터페이스를 구현(Implements)한 예시
특정 인터페이스를 구현했을 때
- 필수 : 해당 인터페이스가 요구했던 사항은 반드시 존재 해야하며,
- 선택 : 그 외에 여러 가지를 추가하는 것은 자유다.
다음은
Character
를 구현한 몇 가지 타입 예제입니다.type Human implements Character { # 인터페이스에 명시된 요소들 필수 포함 id: ID! name: String! friends: [Character] appearsIn: [Episode]! # 나머지는 자유롭게 추가 가능 starships: [Starship] totalCredits: Int } type Droid implements Character { # 인터페이스에 명시된 요소들 필수 포함 id: ID! name: String! friends: [Character] appearsIn: [Episode]! # 나머지는 자유롭게 추가 가능 primaryFunction: String }
두 타입 모두
Character
인터페이스의 모든 필드를 가지고 있습니다. 또한 특정 캐릭터에 추가 필드 totalCredits
starships
, primaryFunction
을 가질 수도 있습니다.