서버 통신 시 Alias의 필요성
안드로이드 개발을 할 때 우리가 Retrofit + Gson(혹은 Moshi) 라이브러리를 사용해 서버와 통신할 때 서버의 이름이 우리가 쓰는 클래스의 필드명과 일치하지 않을 경우가 있다. 이런 경우 데이터 처리를 위해 @SerializedName("[서버의 필드명]")을 사용해 서버의 필드명을 클래스의 필드명에 대입시킨다. 이렇게 하는 이유는 서버의 필드명이 클라이언트의 필드명과 일치하지 않을 경우 데이터 처리가 복잡해지기 때문이다.
서버의 필드명이 강제되는 REST API와는 달리 GraphQL은 우리가 쿼리를 만들어 낼 수 있어 쿼리단에서 데이터의 필드명 자체를 변경할 수 있다. 따라서 아예 서버에서 데이터를 받아온 후 필드명을 바꿀 필요 없이 데이터를 받아올 때 필드의 명칭 자체를 변경시킬 수 있다. 이때 이용하는 것이 바로 alias이다.
GraphQL의 Alias
GraphQL은 SQL의 Alias 기능 처럼 처음 가져올 때 필드명을 변경하는 Alias 기능을 제공한다. 예를 들어보자. 아래 그림1과 같은 쿼리를 날릴 경우 title 필드는 title로 데이터가 온다.
이 경우 우리는 다음의 방식으로 필드의 Alias를 지정할 수 있다.
[Alias] : [Field Name]
예를 들어 위 [그림1]의 쿼리에서 title이 아니라 filmTitle로 데이터를 받아야 하는 경우 [그림2]와 같이 필드를 지정하면 된다.
그러면 [그림1]에서 title로 오던 데이터가 filmTitle로 오는 것을 [그림3]에서 확인할 수 있다.
Alias를 지정하면 서버가 Alias를 이요해 새로운 필드 명칭을 반환한다.