[GraphQL] GraphQL

Narcoker·2023년 2월 27일
0

Web

목록 보기
2/11
post-custom-banner

기존 API 호출 방식의 한계

기존 REST API나 다른 API 호출 방식은 서버가 정의한 데이터 구조만을
한번에 하나씩 가져올 수 있다.
이러한 이유로 앱 단에서 직접 뷰에 보여질 쿼리를 만들어
모든 데이터를 한번에 가져와야한다.

GraphQL

GraphQL은 클라이언트에서 자기가 필요한 데이터만을 쿼리할 수 있도록 하여
위에서 언급한 문제를 해결한다.

클라이언트가 자신에게 필요한 데이터에 대한 Query를 선언해 GraphQL에 넘기면
서버는 Query를 해석해 해당 데이터만 클라이언트에 반환한다.

사용자라는 객체에 속성이 id, name, age, phoneNumber가 있다고 가정한다.
만약 특정 id를 가진 사용자의 name과 age만 필요하다면 다음과 같이 사용하면 된다.

query Author($id : Int) {
    author(id: $id){
        name
        email
    }
}

요청 단위

HTTP 요청을 할때 GET,POST,DELETE, PATCH 등의 메서드가 제공되는 것처럼
GraphQL 또한 query, mutation, subscription 의 세가지 요청 방식을 제공한다.

query


읽기 전용으로 데이터를 가져오기 위한 메서드이다.
데이터가 변화될 필요없이 단순한 조회가 필요할 때이다.
예를 들어 View를 그리기 위한 정보 혹은 유저 정보를 가져오기 위한 경우 사용한다.

mutation


데이터를 변경한후 가져오기 위한 메서드이다.
요청을 데이터를 변화시켜야 하는 경우에 사용한다.
예를 들어 회원 가입을 통해 유저가 등록되어야 한다거나,
주문이 접수되어 유저의 주문 정보가 업데이트 되었을 경우 사용한다.

subscription


실시간으로 변경된 데이터를 가져오기 위한 요청 방식이다.
웹소켓을 통해 소켓 통신을 열어두고 데이터 업데이트 시 알리는 방식으로 이뤄진다.
데이터가 자주 업데이트 되어야하는 View(채팅)라면 매번 업데이트 될 때 마다
HTTP 요청을 보내는 것은 자원의 낭비가 심하므로 소켓통신으로 처리하는 것이 좋다.

profile
열정, 끈기, 집념의 Frontend Developer
post-custom-banner

0개의 댓글