
기능:
'oneOf' Input Object
'oneOf' Input Object
oneOf input object는 특수한 종류의 input object입니다. 입력 필드 중 정확히 하나만 입력으로 제공해야 하며, 그렇지 않으면 서버가 유효성 검사 오류를 반환합니다. 이 동작은 GraphQL의 입력에 다형성을 도입하여 더 깔끔한 스키마를 설계할 수 있게 해줍니다.
예를 들어, 애플리케이션에서 사용자를 조회할 때 사용자 ID나 이메일 주소 등 다양한 속성을 사용할 수 있습니다. 이를 구현하려면 일반적으로 각 속성마다 별도의 필드를 만들어야 합니다:
type Query {
userByID(id: ID!): User
userByEmail(email: String!): User
}oneOf input object를 사용하면, 대신 UserByInput oneOf input object를 통해 모든 속성을 받는 단일 필드 user를 가질 수 있습니다. 이 경우 속성(ID 또는 이메일 주소) 중 하나만 제공할 수 있으며 반드시 제공해야 한다는 것을 알 수 있습니다:
type Query {
user(by: UserByInput!): User
}
input UserByInput @oneOf {
id: ID
email: String
}쿼리에서는 속성 중 정확히 하나에 대한 입력값을 제공합니다:
{
tom: user(by: {
id: 1
}) {
name
}
jerry: user(by: {
email: "jerry@warnerbros.com"
}) {
name
}
}