서버 통신 시 Alias의 필요성 안드로이드 개발을 할 때 우리가 Retrofit + Gson(혹은 Moshi) 라이브러리를 사용해 서버와 통신할 때 서버의 이름이 우리가 쓰는 클래스의 필드명과 일치하지 않을 경우가 있다. 이런 경우 데이터 처리를 위해 @SerializedName("[서버의 필드명]")을 사용해 서버의 필드명을 클래스의 필드명에 대입시킨다. 이렇게 하는 이유는 서버의 필드명이 클라이언트의 필드명과 일치하지 않을 경우 데이터 처리가 복잡해지기 때문이다. 서버의 필드명이 강제되는 REST API와는 달리 GraphQL은 우리가 쿼리를 만들어 낼 수 있어 쿼리단에서 데이터의 필드명 자체를 변경할 수 있다. 따라서 아예 서버에서 데이터를 받아온 후 필드명을 바꿀 필요 없이 데이터를 받아올 때 ..
Network/GraphQL
GraphQL query를 실행한 후 반환 데이터 조작 Query Language라면 GraphQL은 query의 반환 데이터를 조작하기 위한 다양한 방법을 제공한다. 이번 글에서는 이 중 개수를 제한하는 방법에 대해 알아볼 것이다. 이번글의 실습 예제는 아래 사이트에서 확인할 수 있다. SWAPI GraphQL API graphql.org first, last를 활용해 데이터 개수 제한하기 앞선 글들에서 다중 데이터 조회 시 모든 데이터가 반환되었다. 예를 들어 아래와 같은 쿼리로 데이터를 조회하는 경우를 살펴보자. query QueryFilms { allFilms{ films { title director } } } 이 쿼리를 실행하면 [그림1]과 같이 모든 영화정보에 대한 데이터가 반환된다. 이러한..
GraphQL query 다루기 GraphQL은 클라이언트가 요청한 query를 읽어 데이터를 반환하는 역할을 한다. GraphQL이나 SQL과 같은 Query Language는 다양한 요청을 처리할 수 있어야 하므로 다양한 제약과 옵션이 들어간다. 예를 들어 SQL에서는 group by 를 사용하기 위해서는 group 별로 하나의 데이터를 반환할 수 있는 SUM 과 같은 연산을 더하도록 강제하며, ORDER BY 문을 통해 데이터를 정렬할 수 있도록 한다. GraphQL도 SQL과 같은 Query Language 이므로 다양한 제약을 강제하고 옵션을 제공한다. 이번글에서는 GraphQL이 단일 데이터를 출력하기 위해 강제하는 제약에 대해 알아볼 것이다. * 아래 링크에서 예시 코드를 실행시켜 볼 수 있..
내향성 쿼리란? GraphQL을 사용하기 위해서는 우리가 서버에 쿼리할 수 있는 schema에 대한 정보가 필요하다. schema에 대한 정보가 없다면 어떤 데이터를 받아올 수 있는지를 알 수 없기 때문이다. GraphQL은 introspective query를 통해 schema에 대한 정보를 제공한다. introspective query를 사용하면 우리는 편하게 GraphQL을 사용할 수 있게 된다. 우리가 GraphiQL 사이트에서 ctrl+space를 누르면 자동완성이 되었었는데, 이 자동완성 정보들 또한 내향성 쿼리를 통해 제공된다. 즉, 정리하면 우리는 introspective query를 통해 어떤 schema가 서버에서 제공되는지 알 수 있다. 내향성 쿼리의 종류와 네이밍 내향성 쿼리는 __..
준비사항 이번 글에서는 GraphiQL에서 제공하는 시각적 편집기를 사용해 query를 생성한 후 실행한다. 아래 사이트를 참조하길 바란다. SWAPI GraphQL API graphql.org query : 읽기 전용으로 데이터를 가져오기 위한 메서드 query는 읽기 전용으로 데이터를 가져오기 위한 메서드이다. query를 통해 가져오는 데이터는 객체 단위로 가져와지며, query는 이름, 변수, 필드 총 3가지 구성요소로 이루어진다. 이 글에서는 이에 대해 간단히 살펴보기 위해 다음의 쿼리를 살펴본다. 아래 쿼리는 영화 정보(Film Info)를 추출하기 위한 query이다. 아래 query에서는 영화 정보(film)를 가져오는데 제목(title), 감독(director), 프로듀서들(produce..