[TIL] <2020.05.20> GraphQl 이 뭔가요?

이성진·2020년 5월 20일
0


시작에 앞서 이 글은 '얄팍한 코딩사전'을 참고하였음을 알려드립니다.


저번 글에서는(제 기준 10분 전) REST API 에 대해서 알아보았습니다.

REST API란 개발자들간의 지키기로 약속한 일정한 형식으로 요청 자체만으로도 어떤 행동을 할지를 추론할 수 있게 하는 형식입니다.

이번 시간에는 떠오르는 샛별 GraphQl에 대해서 배워볼까 합니다.

GraphQl 이란?

간단한 예제부터 보고 가겠습니다.

// [POST] request
{
	toppings {
    	chesse,
        meat,
        sausage,
        onion,
        olive,
        mushroom,
        pepper
    }
}
// response
{
  "data": {
    "topping": {
      "cheese": "mozarella",
      "meat": "pork",
      "sausage": "pepperoni",
      "onion": "white onion",
      "olive": "black olive",
      "mushroom": "button mushroom",
      "pepper": "bell pepper",
    }
  }
}

REST API 였으면 (도메인)/api/pizza/toppings의 uri에 GET 요청을 보냈겠지만 GraphQl을 이용하면 column을 적으면 됩니다.
게다가 GraphQl은 자신이 원하는 column만을 적어서 받을 수도 있습니다.

만약 피자 전체를 주문하고 싶으면 이렇게 GraphQl을 작성합니다.

// [POST] request
{
	pizza (type: "house special") {
    	dough
        crust
        toppings {
        	cheese
            meat
            sausage
        }
    }
}

// response
{
  "data": {
    "pizza": {
      "dough": "tea-kwon dough",
      "crust": "sweet potato",
      "topping": {
        "cheese": "mozarella",
        "meat": "pork",
        "sausage": "pepperoni",
        "onion": "white onion",
        "olive": "black olive",
        "mushroom": "button mushroom",
        "pepper": "bell pepper",
      } 
    }
  }
}

이전에는 자신이 원하지 않아도 요청을 보내면 정해진 형식으로 응답을 해줬습니다. 그러면 내가 원하지 않는 데이터도 같이 오면서 일종의 낭비가 일어납니다.

그래서 아래와 같이 각 방법의 장단점을 적어보겠습니다.

  • REST API
    - 장점: 역할이 명확하게 분리되어 있어서 API마다 하는 일이 정해져 있다.
    - 단점: 전송되는 데이터의 양 측면에서 소모가 크다. 요청 횟수가 많다. 코드가 복잡해 진다.
  • GrahQl
    - 장점: 내가 원하는 것만 골라서 요청할 수 있다. 한 번의 요청으로 body에 유연하게 요청을 보낼 수 있다.
    - 단점: 받아야 하는 항목들이 많고 딱 정해져 있는 경우 일일이 적어야 하는 번거로움이 있음 -> REST API가 유리함

출처: 얄팍한 코딩사전 유튜브


밴엔드 서버 하나에 이걸 어떻게 구현할 지 막막하시죠? 그럴 필요 없습니다.
둘 다 구현하면 됩니다. 각 정보마다 유리한 방법을 골라 클라이언트에 제공하면 됩니다. (개발자가 구현하기 나름..)

profile
개발보다 회사 매출에 영향력을 주는 개발자

0개의 댓글