GraphQL이란?

3616 단어 graphqlpostgress

GraphQL


GraphQL은 API의 쿼리 언어입니다.GraphQL은 클라이언트가 클라이언트의 요구에 기반한 성명적인 데이터를 포함하는 요청을 보낼 수 있도록 합니다.API는 클라이언트가 필요로 하는 데이터 구조를 수신하고 동일한 형식으로 응답을 보냅니다.
GraphQL은 더 이상 여러 개의 단점이 서로 다른 데이터 구조를 되돌려줄 필요가 없다.GraphQL 서버는 한 개의 노드만 공개하고 모든 요청은 이 노드에 전송되며 클라이언트 요청에 기반한 데이터 구조에 응답합니다.

GraphQL의 역사


GraphQL은 최초로 페이스북이 개발해 오픈했다.이들의 API는 지원하는 클라이언트(웹 응용 프로그램, 모바일 응용 프로그램 등)에 따라 다른 데이터를 되돌려야 하기 때문에 GraphQL의 개발이 이루어졌다.

GraphQL이 필요한 이유


GraphQL의 주요 장점 중 하나는 과도한 캡처를 피하는 것이다(본문의 범위를 넘어선 다른 장점도 있다)
무엇이 과도한 끌림입니까?
기존 REST API를 사용하면 각 끝점이 미리 정의된 데이터 구조를 반환합니다.두 개의 클라이언트가 이 API인 웹과 모바일 응용 프로그램을 사용하는 장면을 고려합니다.모바일 응용 프로그램은 단점에서 되돌아오는 데이터가 필요하지 않을 수도 있고 웹 응용 프로그램이 이 데이터를 사용하고 있기 때문에 단점에서 삭제할 수 없습니다.현재 모바일 응용 프로그램에서 데이터를 과도하게 얻으면 네트워크 속도가 가장 좋지 않을 수도 있고, 이러한 추가 바이트 데이터는 응용 프로그램의 속도를 더욱 낮출 수도 있다.

실제 도전의 예


데스크톱 사용자와 모바일 응용 프로그램을 위한 게임 클라이언트 응용 프로그램을 구축하고 있습니다
응용 프로그램의 간단한 모형, 당신은 내가 디자이너가 아니라는 것을 발견할 수 있습니다:)

데스크톱 프로그램에서 홈 페이지에 게임 목록과 현재 온라인 사용자를 표시합니다.모바일 애플리케이션에서는 게임 목록만 표시됩니다.서버에서 데이터를 가져오는 기존 REST 끝점은 다음과 같습니다.
끝 - /api/home
{
    "games":[{
        "name": "Game 1",
        "hours": 200
    }, {
        "name": "Game 2",
        "hours": 25
    }],

    "online_users": [{
        "name": "Name 1"
    }, {
        "name": "Name 2"
    }, {
        "name": "Name 3"
    }]
}
모바일 응용 프로그램에서 온라인 사용자 데이터를 사용하지 않았지만, 서버에서 이 데이터를 얻을 수 있습니다.우리가 필요로 하는 것보다 다운로드한 내용이 많기 때문에 이동 체험이 느려질 수 있다.GraphQL은 이 문제를 피하지만 고객이 무엇을 필요로 하는지 결정하는 데 도움을 줄 수 있는 구출 역할을 한다.

GraphQL 솔루션


우선, 우리는 클라이언트 응용 프로그램과 서버에서 사용할 모델을 정의해야 한다.이것은 데이터의 구조와 어떤 필드를 얻을 수 있는지의 기초를 구성할 것이다.
type Query {
    games: Games
    online_users: Users
}

type Games {
    name: String
    hours: Int
}

type Users {
    name: String
}
데스크톱 프로그램에서 다음 GraphQL 조회를 사용하십시오
끝 - /api/graphql
    {
        games {
            name
            hours
        }
        online_users {
            name
        }
    }
모바일 응용 프로그램에서 다음 GraphQL 조회를 사용하십시오
끝 - /api/graphql
    {
        games {
            name
            hours
        }
    }
참고: 두 응용 프로그램은 서로 다른 데이터를 사용하여 동일한 API 엔드포인트를 호출합니다.

GraphQL을 사용해야 하는 이유

  • 서로 다른 데이터 수요를 가진 여러 클라이언트/플랫폼 접근 웹 서비스
  • 많은 클라이언트가 있고 모든 클라이언트가 서로 다른 형식의 데이터를 필요로 할 때GraphQL은 이 프로젝트에 매우 적합할 것이다
  • 유효한 데이터 로드
  • GraphQL은 네트워크를 통해 전송되는 데이터를 최소화하여 어플리케이션의 효율성을 향상시킵니다.
  • 빠른 기능 개발
  • GraphQL은 모드에 새 필드를 추가하는 팀이 기존 질의에 영향을 주지 않아야 하므로 새로운 기능을 구축하는 데 도움이 됩니다.
  • 여러 데이터 소스를 손쉽게 통합
  • 여러 데이터 소스가 있는 경우 GraphQL은 단일 API 호출에서 여러 데이터 소스로부터 데이터를 가져오는 데 도움이 됩니다.

    GraphQL을 사용하지 않는 이유는 무엇입니까?

  • 복잡성
  • 클라이언트 및 서버 측 애플리케이션의 복잡성 증가
  • 복잡한 캐시 정책
  • 캐시는 이전 노드에서 호출된 데이터를 저장하여 후속 요청 속도를 높이는 과정이다.모든 클라이언트가 같은 단점을 호출하지만 GraphQL 구조에 따라 예상되는 결과가 다르기 때문에 GraphQL에서 캐시를 실현하는 것이 REST에서 캐시를 실현하는 것보다 어렵다.
    다음 프로그램에GraphQL을 추가할지 여부를 결정하는 데 도움이 되었으면 합니다.본문과 GraphQL에 대한 귀하의 견해를 알려드리겠습니다.
    계속해서 저희 메일 리스트를 보시고 저희 디스코트 커뮤니티에 가입하세요.
    Discord

    좋은 웹페이지 즐겨찾기