개발/그래프큐엘(graphql)

[그래프큐엘] code-gen시에 the following anonymous operation is skipped 처리

핸디(Handy) 2023. 11. 5. 21:13

https://the-guild.dev/graphql/codegen

Query name

일반적으로 그래프큐엘의 Query name(이하 쿼리이름)은 필수값이 아닌 선택값입니다.

따라서 쿼리이름은 단순히 쿼리를 식별하고 문서화하는데에 사용되면, 쿼리 동작에 직접적으로 영향을 미치치 않습니다.

실제로 쿼리를 확인해보면 첫번째줄에 "reservationByIdQuery"가 없어도 같은 값을 리턴해주는 것을 확인할 수 있습니다.

쿼리이름이 있을때(왼쪽), 없을때(오른쪽)

그래서 쿼리이름은 선택사항이며, 쿼리의 본문이 중요한 부분입니다.

하지만 쿼리이름을 사용하면 클라이언트 및 서버개발자가 코드를 읽는데 훨씬 수월하기에 대부분 쿼리이름을 사용하기를 권장하고 있습니다.

graphql-codegen에서의 쿼리이름

위에서는 쿼리이름이 선택사항이라고 하였습니다.

하지만 실제로 쿼리이름이 없는 상태로 code generator를 돌리게 되면 아래과 같은 결과가 나오게 됩니다.

the following anonymous operation is skipped 라는 경고 메시지가 뜨며 스킵되었다고 나오죠.

실제로 추론된 타입이나 생성된 결과물은 없습니다. (skip 되었기때문에)

하지만 쿼리이름을 만들고 다시 생성하게 되면 잘 추론되는 것을 확인할수 있습니다.

code generator입장에서는 Code Generator 대상이 되는 쿼리의 식별자가 필요하게 되는데, 그게 바로 쿼리 이름으로 만들어집니다.

따라서 쿼리이름이 없으면 쿼리들을 구분할수 없고 임의적으로 이름을 만들기엔 부담스러우니 그냥 스킵하게 되는 것입니다.

결론

쿼리이름을 쓰지 않아도 쿼리에는 문제가 없다.
하지만 코드생성도구에서는 식별자가 필요한데 그것은 쿼리이름이다.
그리고 가독성을 위해서 쿼리이름을 쓰는게 좋다
그러니 쿼리이름을 쓰자.