

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# GraphQL 필드
<a name="graphql-fields"></a>

필드는 유형의 범위 내에 존재하며 GraphQL 서비스에서 요청한 값을 보유합니다. 이는 다른 프로그래밍 언어의 변수와 매우 유사합니다. 예를 들어, `Person` 객체 유형은 다음과 같습니다.

```
type Person {                                  
   name: String                                  
   age: Int
}
```

이 경우 필드는 `name` 및 `age`이고 각각 `String` 및 `Int` 값을 보유합니다. 위에 표시된 것과 같은 객체 필드를 쿼리 및 변형의 필드(작업)에서 입력으로 사용할 수 있습니다. 그 예로 아래 `Query`를 참조하세요.

```
type Query {                                   
  people: [Person]
}
```

`people` 필드는 데이터 원본의 `Person`에 있는 모든 인스턴스를 요청합니다. GraphQL 서버에서 `Person`을 추가하거나 검색할 때 데이터가 유형 및 필드의 형식을 따를 것으로 예상할 수 있습니다. 즉, 스키마의 데이터 구조에 따라 응답에서 데이터가 구조화되는 방식이 결정됩니다.

```
}
  "data": {
    "people": [
      {
        "name": "John Smith",
        "age": "50"
      },
      {
        "name": "Andrew Miller",
        "age": "60"
      },
      .
      .
      .
    ]
  }
}
```

필드는 데이터를 구조화하는 데 중요한 역할을 합니다. 추가 사용자 지정을 위해 필드에 적용할 수 있는 몇 가지 추가 속성이 아래에 설명되어 있습니다.

## Lists
<a name="list-components"></a>

목록은 지정된 유형의 모든 항목을 반환합니다. 대괄호 `[]`를 사용하여 필드 유형에 목록을 추가할 수 있습니다.

```
type Person { 
  name: String
  age: Int
}
type Query {                                   
  people: [Person]
}
```

`Query`에서 `Person` 주위의 대괄호는 데이터 원본의 `Person`에 있는 모든 인스턴스를 배열로 반환한다는 것을 나타냅니다. 응답에서 각 `Person`의 `name` 및 `age` 값은 구분된 단일 목록으로 반환됩니다.

```
}
  "data": {
    "people": [
      {
        "name": "John Smith",         # Data of Person 1
        "age": "50"
      },
      {
        "name": "Andrew Miller",      # Data of Person 2
        "age": "60"
      },
      .                               # Data of Person N
      .
      .
    ]
  }
}
```

특수 객체 유형에만 국한되지 않습니다. 일반 객체 유형의 필드에서도 목록을 사용할 수 있습니다.

## null 아님
<a name="non-null-components"></a>

null 아님 필드는 응답에서 null이 될 수 없는 필드를 나타냅니다. `!` 기호를 사용하여 필드를 null이 아닌 필드로 설정할 수 있습니다.

```
type Person { 
  name: String!
  age: Int
}
type Query {                                   
  people: [Person]
}
```

`name` 필드는 명시적으로 null이 될 수 없습니다. 데이터 원본을 쿼리하고 이 필드에 null 입력을 제공하면 오류가 발생합니다.

목록과 null이 아닌 필드를 조합할 수 있습니다. 다음 쿼리를 비교해 보세요.

```
type Query {                                   
  people: [Person!]      # Use case 1
}

.
.
.

type Query {                                   
  people: [Person]!      # Use case 2
}

.
.
.

type Query {                                   
  people: [Person!]!     # Use case 3
}
```

사용 사례 1에서는 목록에 null 항목을 포함할 수 없습니다. 사용 사례 2에서는 목록 자체를 null로 설정할 수 없습니다. 사용 사례 3에서는 목록과 해당 항목이 null일 수 없습니다. 하지만 어떤 경우에도 빈 목록을 반환할 수 있습니다.