query

    [GraphQL] 9. GraphQL fragment 사용해 query의 중복 제거하기

    GraphQL의 fragment 앞선 글들에서 사용되었던 방법으로는 GraphQL의 특정 블록들을 여러 번 재사용해야 하는 블록의 경우 매번 중복해서 써야한다. 예를 들어 다음 두개 Query들이 있다고 해보자. query QueryFilm1 { film(filmID: 1) { title director producers } } query QueryFilm2 { film(filmID: 2) { title director producers } } 위 쿼리들에서는 title, director, producers들이 중복해서 사용된다. 이 필드들을 하나로 묶어 하나의 필드처럼 쓸 수 있다면 중복을 줄일 수 있을 것이다. GraphQL의 fragment가 바로 이 역할을 한다. GraphQL의 fragment는..

    [GraphQL] 7. GraphQL 의 Query Alias(별칭) 사용해 필드명 바꾸기

    서버 통신 시 Alias의 필요성 안드로이드 개발을 할 때 우리가 Retrofit + Gson(혹은 Moshi) 라이브러리를 사용해 서버와 통신할 때 서버의 이름이 우리가 쓰는 클래스의 필드명과 일치하지 않을 경우가 있다. 이런 경우 데이터 처리를 위해 @SerializedName("[서버의 필드명]")을 사용해 서버의 필드명을 클래스의 필드명에 대입시킨다. 이렇게 하는 이유는 서버의 필드명이 클라이언트의 필드명과 일치하지 않을 경우 데이터 처리가 복잡해지기 때문이다. 서버의 필드명이 강제되는 REST API와는 달리 GraphQL은 우리가 쿼리를 만들어 낼 수 있어 쿼리단에서 데이터의 필드명 자체를 변경할 수 있다. 따라서 아예 서버에서 데이터를 받아온 후 필드명을 바꿀 필요 없이 데이터를 받아올 때 ..

    [GraphQL] 6. first, last 사용해 query의 필드가 반환하는 데이터 개수 제한하기

    GraphQL query를 실행한 후 반환 데이터 조작 Query Language라면 GraphQL은 query의 반환 데이터를 조작하기 위한 다양한 방법을 제공한다. 이번 글에서는 이 중 개수를 제한하는 방법에 대해 알아볼 것이다. 이번글의 실습 예제는 아래 사이트에서 확인할 수 있다. SWAPI GraphQL API graphql.org first, last를 활용해 데이터 개수 제한하기 앞선 글들에서 다중 데이터 조회 시 모든 데이터가 반환되었다. 예를 들어 아래와 같은 쿼리로 데이터를 조회하는 경우를 살펴보자. query QueryFilms { allFilms{ films { title director } } } 이 쿼리를 실행하면 [그림1]과 같이 모든 영화정보에 대한 데이터가 반환된다. 이러한..

    [GraphQL] 5. 단일 데이터를 가져오는 query와 다중 데이터를 가져오는 query의 제약

    GraphQL query 다루기 GraphQL은 클라이언트가 요청한 query를 읽어 데이터를 반환하는 역할을 한다. GraphQL이나 SQL과 같은 Query Language는 다양한 요청을 처리할 수 있어야 하므로 다양한 제약과 옵션이 들어간다. 예를 들어 SQL에서는 group by 를 사용하기 위해서는 group 별로 하나의 데이터를 반환할 수 있는 SUM 과 같은 연산을 더하도록 강제하며, ORDER BY 문을 통해 데이터를 정렬할 수 있도록 한다. GraphQL도 SQL과 같은 Query Language 이므로 다양한 제약을 강제하고 옵션을 제공한다. 이번글에서는 GraphQL이 단일 데이터를 출력하기 위해 강제하는 제약에 대해 알아볼 것이다. * 아래 링크에서 예시 코드를 실행시켜 볼 수 있..

    [GraphQL] 4. GraphQL의 introspective query(내향성 쿼리) 사용해 schema, field 정보 조회하기

    내향성 쿼리란? GraphQL을 사용하기 위해서는 우리가 서버에 쿼리할 수 있는 schema에 대한 정보가 필요하다. schema에 대한 정보가 없다면 어떤 데이터를 받아올 수 있는지를 알 수 없기 때문이다. GraphQL은 introspective query를 통해 schema에 대한 정보를 제공한다. introspective query를 사용하면 우리는 편하게 GraphQL을 사용할 수 있게 된다. 우리가 GraphiQL 사이트에서 ctrl+space를 누르면 자동완성이 되었었는데, 이 자동완성 정보들 또한 내향성 쿼리를 통해 제공된다. 즉, 정리하면 우리는 introspective query를 통해 어떤 schema가 서버에서 제공되는지 알 수 있다. 내향성 쿼리의 종류와 네이밍 내향성 쿼리는 __..