수색…


비고

GraphQL 은 API에 대한 쿼리 언어이며 기존 데이터로 이러한 쿼리를 수행하기위한 런타임입니다. GraphQL은 API의 데이터에 대한 완벽하고 이해하기 쉬운 설명을 제공하고 고객에게 필요한 것을 정확히 물어볼 수있는 능력을 제공하며 시간이 지남에 따라 API를 쉽게 진화시키고 강력한 개발자 도구를 가능하게합니다.

GraphQL은 언제 사용해야합니까?

GraphQL은 모든 종류의 애플리케이션을위한 외부 지향적 인 HTTP API를위한 것이지만 상호 연결된 컬렉션 | 테이블 | 노드로 데이터를 정규화 할 때 가장 강력합니다. GraphQL Query Language (GQL)는 매우 직관적이고 유연한 방법으로 상호 연결된 데이터를 투영하도록 설계되었습니다.

구현

GraphQL 자체는 Spec 이며 다양한 프로그래밍 언어로 구현 됩니다. 가장 많이 사용되는 지원 언어입니다.

클라이언트 라이브러리

클라이언트 측에서 실행중인 쿼리는 모든 HTTP 클라이언트에서 수행 할 수 있지만 클라이언트 측 라이브러리는 매우 유용 할 수 있습니다.

개발 도구

버전

번역 출시일
v0.5.0 2016-04-08
v0.6.0 2016-05-10
v0.6.1 2016-07-07
v0.6.2 2016-07-21
v0.7.0 2016-08-26
v0.7.1 2016-09-29
v0.7.2 2016-10-10
v0.8.0 2016-11-10
v0.8.1 2016-11-11
v0.8.2 2016-11-16

서버 설치 및 구현

GraphQL.js

GraphQL.jsGraphQL 의 JavaScript 참조 구현입니다. npm을 통해 설치할 수 있습니다.

  • 아직 수행하지 않았다면 프로젝트에서 npm을 초기화하십시오 : npm init
  • npm에서 GraphQL.js 설치 : npm install --save graphql

예제 서버

var { graphql, buildSchema } = require('graphql');

// Construct a schema, using GraphQL schema language
var schema = buildSchema(`
  type Query {
    hello: String
  }
`);

// The root provides a resolver function for each API endpoint
var root = {
  hello: () => {
    return 'Hello world!';
  },
};

// Run the GraphQL query '{ hello }' and print out the response
graphql(schema, '{ hello }', root).then((response) => {
  console.log(response);
});

서버 미들웨어 대안

GraphQL 쿼리 언어 (GQL)

GraphQL에서 각 데이터 리소스에 대한 URL 끝점을 정의하는 대신 GraphQL 쿼리를 수락하는 단일 끝점을 정의합니다. 일반적인 데이터베이스 쿼리 언어와 달리 GQL (GraphQL Query Language)은 루트 수준 쿼리에서 반환하는 데이터를 투영합니다. GraphQL 스키마는 데이터 모델과 루트 레벨 쿼리 및 변이를 정의합니다. GQL은 이러한 쿼리를 실행하고 반환 할 데이터를 정의합니다.

스타 워즈 스키마의 모든 영화 제목 쿼리

제목 만 투영 한 allFilms에 대한 Star Wars 데이터 쿼리 GraphiQL 쿼리

Star Wars 영화 "새로운 희망"에 대한 플래닛 주민들의 질문

여기에 이미지 설명을 입력하십시오. GraphiQL 쿼리

루트 쿼리 film() 이 "A New Hope"영화의 id 매개 변수를 취하고 GQL에서 투영되면 제목, 행성이 영화에 연결된 다음 행성의 주민 이름을 반환하는 방법에 유의하십시오. Star Wars GraphiQL 사이트에서 GraphQL 쿼리를 시험해보십시오.

스키마 정의

GraphQL 에서 스키마는 루트 실행 쿼리 및 변이 뿐만 아니라 데이터 유형 을 정의합니다.

스키마 개체 유형

Person 유형에는 두 개의 필드가 있으며, 하나는 표준 스칼라 유형이고 다른 하나는 '친구'인 다른 Person 유형 목록과의 관계를 나타냅니다. 다른 유형을 연결하면 GraphQL이 매우 강력 해집니다. 이제 GraphQL Query Language (GQL)에서 클라이언트는 추가 코드 나 고급 쿼리없이 친구 그래프를 탐색 할 수 있습니다.

type Person {
  id: ID
  name: String
  friends: [Person]
}

스키마 쿼리

person 쿼리는 ID로 한 사람을 조회합니다. 이것은 GQL을 사용하는 클라이언트의 데이터 진입 점입니다.

type Query {   
  person(id: ID!): Person
}

Nick 's 친구의 친구보기

Person 타입과 Person root 질의가 생겼으므로 우리는 사람을 조회 할 수 있고 우리는 그 사람의 친구 네트워크에 대해 원하는만큼 분리 할 수 ​​있습니다.

query {
  person(id: 'nick'){
    id
    name
    friends{
      id
      name
      friends{
        id
        name
        friends{
          id
          name
        }
      }
    }
  }
}


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow