위 글에서 보면 Directives 를 이렇게 설명 하고 있습니다.
Directives provide a way to describe alternate runtime execution and type validation behavior in a GraphQL document.
즉
이 있다는 것 을 알 수 있습니다.
와 같이 매번 선언해서 사용하긴 어렵고 type에 따라 자주 사용되는 기능에 추가여 사용하기 좋습니다.
directive @cacheControl(maxAge: Int) on OBJECT | FIELD_DEFINITION
저희가 graphql 을 사용하고 있을때 자주 사용되는 Apollo server에 함께 쓰이는 apollo-cache-control 를 활용하는 방법중 하나인 @cacheControl
입니다.
이 외에도 다양한 directive 들을 사용하셨을 것 입니다.
apollo cache 이외에도 graphql 에서는 기본적으로 제공하는 directives 가 있습니다.
query book($yes:Boolean!,$no:Boolean!){
books{
title @skip(if:$no)
author @include(if:$yes)
}
}
# varialbe
{"yes":true,"no":false}
type Book {
title: String @auth()
author: String @cache
user: String @deprecated(reason: "Field is replace author")
}
type Query {
books: [Book]
}
물론 기본 제공하는 directive 외에도 사용자가 지정할 수 있습니다.
Schema directives | GraphQL Tools