namu445 2022. 5. 11. 15:05
  • API에 사용하는 쿼리 언어입니다.
  • 서버에서 실행하고 사용됩니다.
  • 쿼리외에 다른 언어로도 사용이 가능합니다.
  • 서버에서 정한 양식에 맞게 request 쿼리를 보내면 그에 맞는 response를 받을 수 있습니다.
    • 클라이언트는 서버에서 정한  request 양식에서 원하는 데이터만 선택해서 받을 수 있습니다.
      • 최적화가 잘된 GraphQL은 대규모 서비스에 유리합니다.(SNS) -> 네트워크 비용을 절약할 수 있습니다.
    • 양식이 정해져 있지 않기 때문에 자유로운만큼 최적화를 위한 사용법이 잘못되면 오히려 낭비가 생기거나 의도치 않은 오류를 낼 수 있다.
    • 내부 에러가 발생해도 response status code는 항상 200이다. 에러 메세지로 에러를 구분할 수 있다.
  • restAPI와 같이 사용할 수 있다.
  • end-point(클라이언트의 요청에 대응하는 서버측 지점)가 하나다.
    • 엔드 포인트는 하나지만 여러개의 api를 한번에 요청할 수 있다.
  • 아래의 예시는 hero의 name과 friends, friends의 name 정보를 요청하고 잇습니다.
//request
{
  hero {
    name
    friends {
      name
    }
  }
}
//response
{
  "data": {
    "hero": {
      "name": "R2-D2",
      "friends": [
        {
          "name": "Luke Skywalker"
        },
        {
          "name": "Han Solo"
        },
        {
          "name": "Leia Organa"
        }
      ]
    }
  }
}

 

  • 객체와 필드에 함수와 같이 인수를 사용할 수 있습니다.
  • 아래 예시에서 height의 unit 인수는 응답을 meter로 받을 지 feet로 받을지 알려주는 인수로 추측할 수 있습니다.
//request
{
  human(id: "1000") {
    name
    height(unit: FOOT)
  }
}
//response
{
  "data": {
    "human": {
      "name": "Luke Skywalker",
      "height": 5.6430448
    }
  }
}

 

 

 

<참고>

https://graphql.org/learn/

 

Introduction to GraphQL | GraphQL

Introduction to GraphQL Learn about GraphQL, how it works, and how to use it. Looking for documentation on how to build a GraphQL service? There are libraries to help you implement GraphQL in many different languages. For an in-depth learning experience wi

graphql.org

https://medium.com/nerd-for-tech/graphql-vs-restful-e1a99fd14285

 

GraphQL vs. RESTful

When it comes to API’s most people are initially introduced to and continue to utilize RESTful conventions, but GraphQL has been getting…

medium.com