시작에 앞서 이 글은 '얄팍한 코딩사전'을 참고하였음을 알려드립니다.
저번 글에서는(제 기준 10분 전) REST API 에 대해서 알아보았습니다.
REST API란 개발자들간의 지키기로 약속한 일정한 형식으로 요청 자체만으로도 어떤 행동을 할지를 추론할 수 있게 하는 형식입니다.
이번 시간에는 떠오르는 샛별 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",
}
}
}
}
이전에는 자신이 원하지 않아도 요청을 보내면 정해진 형식으로 응답을 해줬습니다. 그러면 내가 원하지 않는 데이터도 같이 오면서 일종의 낭비가 일어납니다.
그래서 아래와 같이 각 방법의 장단점을 적어보겠습니다.
출처: 얄팍한 코딩사전 유튜브
밴엔드 서버 하나에 이걸 어떻게 구현할 지 막막하시죠? 그럴 필요 없습니다.
둘 다 구현하면 됩니다. 각 정보마다 유리한 방법을 골라 클라이언트에 제공하면 됩니다. (개발자가 구현하기 나름..)