You will be fine

<GraphQL> 0. GraphQL 이란

by BFine
반응형

가. REST API의 단점

 a. REST API

  -  대부분의 API 서버는 HTTP 통신 방법 중 하나인 REST 형태로 많이 사용하고 있다.

       => 자원의 주소인 URI 와 행위를 표현하는 방법으로 HTTP Status를 이용하는 방법이다.

  -  많이 사용한다고 해서 단점이 없는 것이 아니기 때문에 아래에서 단점을 확인해보자.

 

 b. Underfatching & Overfatching

{
	{
		  "id"   : 1,
        "name" : "Kim"
        "age"  : 26
 	},
    {
        "id"   : 2
        "name" : "Park"
        "age"  : 23 
    }
}

  -  위처럼 응답을 하는 API가 있다고 가정을 했을때 만약에 내가 나이정보가 필요하지 않다고 해도 전부 받아올 수 밖에 없다.

    => 이렇게 불필요한 데이터도 전달받게 되는것을 overfetching 이라고 한다. (fetching이란 서버로부터 데이터를 가져오는 과정을 의미한다. )

{
	{
		  "id"   : 1,
        "addr" : "서울 강남구"
 	},
    {
        "id"   : 2
        "addr" : "대전 동구" 
    }
}

  -  두번째로 주소를 응답해주는 API가 있고 위의 API에 추가로 필요할 경우 각각 한번씩 두번 호출해야한다.

     => 이렇게 API가 분리되어 데이터를 얻기 위해 여러번 호출하는 것을 underfetching 이라고 한다.

 

 c. 여러 EndPoint

  -  REST API 자원의 위치를 URI를 통해 나타내기 때문에 관리가 필요하며 새로운 요구사항이 생기는 경우 거기에 맞는 URI를 작성해야한다. 

 

나. GraphQL

 a. 무엇인가.

  -  Query Language 형태의 HTTP 기반의 통신 방법 중 하나로 페이스북에서 개발한 오픈소스이다.

  -  주 목적은 서버가 아닌 클라이언트에서 데이터의 형태를 결정해서 통신하는 방법이다.

 

 b. 특징

  -  underfetching & overfetching 문제를 Query 형태의 요청을 통해 해결할 수 있다. 

  -  클라이언트에서 요청하는 Type에 대해 엄격한 유효성 체크를 한다.

  -  서버로 Query 요청시 하나의 Endpoint만을 사용한다. (일반적으로 {도메인}/graphql)

  -  REST의 경우 리소스 중심이지만 graphql은 Entity graph가 핵심 모델이다.

 

반응형

블로그의 정보

57개월 BackEnd

BFine

활동하기