Computer Science/GraphQL

GraphQL이란?

nayoon030303 2021. 7. 20. 17:22

 

과거 RestAPI에 대해서 설명했던 적이 있었습니다. 

https://nayoon030303.tistory.com/25

 

Rest API에 대해서

GraphQL에 대해서 공부하기 이전에 REST API에 대해서 간단하게 알아보겠습니다. 📕REST API란 소프트웨어 간 정보를 주고받는 방식입니다. GraphQL이전부터 사용 '다른' 방식 - 용도와 작업 특성에 따라

nayoon030303.tistory.com

이번 시간에는 GraphQl에 대해서 공부해보도록 해보겠습니다!

 

GraphQL이란 페이스북에서 만든 2012년에 개발되어서 2015년에 오픈소스로 공개된 데이터 쿼리 언어입니다. 기존 데이터로 된 쿼리를 수행하기 위한 서버 측 런타임입니다. 

GraphQL API는 엔드포인트가 아닌 유형과 필드로 구성됩니다. 단일 엔드포인트에서 데이터의 모든 기능을 접근할 수 있습니다. GraphQL은 유형을 사용하여 앱이 가능한 것만 요청하고 명확하고 유용한 오류를 제공하도록 합니다. 

 

자세한 설명은 GraphQL 공식 설명에 들어가보세요

https://graphql.org/

 

GraphQL | A query language for your API

Evolve your APIwithout versions Add new fields and types to your GraphQL API without impacting existing queries. Aging fields can be deprecated and hidden from tools. By using a single evolving version, GraphQL APIs give apps continuous access to new featu

graphql.org

 

 

📕GraphQL

GraphQLRest API의 한계를 극복하고자 나왔다고 할 수 있습니다. Rest API의 한계로는 Over-Fetching과 Under-Fetching이 있습니다. GraphQL은 Endpoint를 1개만 생성해 단 한 번의 요청으로 많은 리소스를 받을 수 있습니다. GraphQL을 사용하면 느린 모바일 네트워크 연결에서도 빠르게 사용할 수 있습니다. 

 

📗Over-Fetching 문제를 GraphQL을 사용하면 쉽게 해결됩니다.

 

요청 쿼리 

query{
	hero{
    	name
        height
        .
        .
        .
    }
}

반환 결과

{
	"hero":{
    	"name":"Kim MiRim",
        "height":"163",
        .
        .
        .
    }
}

불필요한 데이터들 없이 원하는 데이터들만 받아올 수 있습니다. 

 

 

 

📘Under-Fetching 문제를 GraphQL을 사용하면 쉽게 해결됩니다.

 

요청 쿼리

query{
	hero{
    	name
        height
    }
    friend{
    	name
        climate
    }
}

반환 결과

{
	"hero":{
    	"name":"Kim Mirim",
        "height":"163"
    },
    "friend":{
    	"name":"ABC"
        "climate":"DEV"
    }
}

한 번에 요청에 원하는 데이터들을 받아올 수 있습니다. 

 

 

📙GraphQL에 단점

GraphQl에 장점만 있는 것은 아닙니다. 모든 언어가 그렇듯이 GraphQL에도 단점이 존재합니다. 

  1. 백앤드, 클라이언트 개발자 모두 러닝 커브가 높습니다. 
  2. 하나의 URL로 모두 처라 하기에, HTTP에서 제공하는 캐싱을 그대로 사용하는 것이 불가능합니다..
  3. 요청을 text로 날리기 때문에 파일 업로드가 어렵습니다. 

 

💡마무리

이번 시간에 데이터를 주고받는 방식인 GraphQL에 대해서 알아봤습니다. Rest API에 단점을 보완할 수 있지만 또 다른 단점들이 나타났네요. Rest API, GrapQL 둘 중 어느 것이 더 좋다!라고 단정할 수는 없습니다. 하지만 각 상황에 따라서 어는 것이 더 좋을지는 달라지기 때문입니다. 다음 시간에는 GraphQL에 대해서 더 자세히 살펴보겠습니다.