초보자 GraphQL 자습서 - 모드 정의

이 블로그 글은 초보 강좌의 일부분이다.나를 따라 더 많은 정보를 얻자.
GraphQL에 대한 이전 논문의 이론적 소개를 통해 우리는 이 표준의 중요한 부분, 즉 유형 시스템을 계속 설명할 수 있습니다. 이것은 당신이 API 방안-GraphQL 모드 정의 언어(SDL)를 정의할 수 있도록 합니다.이것은 특수한 문법으로 이미 좋은 문서 기록이 있고 이런 방식으로 만들어져서 어떤 언어나 프레임워크를 사용하든지 사용할 수 있습니다.

유형 시스템


GraphQL은 강력한 유형으로 정의마다 특정 유형이 있어야 합니다.유형 시스템은 여러 가지 API 요소를 정의할 수 있는 가능성을 제공하는 도움말을 제공합니다.라이브러리 응용 프로그램(책과 저자)이 API의 첫 번째 유형을 설명한 것을 고려해 봅시다.그림을 클릭하여 책의 예시로 이동합니다.

전체 퍼즐에서 가장 중요하고 자주 사용하는 요소는 대상 유형이고 가장 간단한 말은 한 그룹의 필드이다.이상의 예: 형식 책 {}과 형식 저자 {}를 사용하여 두 개의 대상을 정의했습니다. 이 성명에서는 이름: String!,또는 ISBookof Year: Boolean!

측정 유형


GraphQL의 필드 선언에는 다음과 같은 몇 가지 내장 측정 유형이 있습니다.
  • 문자열 - UTF-8 형식의 문자 세트
  • Int-32 비트 정수,
  • 부동 소수점 - 부동 소수점,
  • 부울 값true 또는false
  • ID - 재다운로드(캐시에서 사용)에 가장 많이 사용되는 객체의 고유 식별자 유형을 나타냅니다.그것은 문자열 형식과 같은 방식으로 서열화되었다.

  • 인터페이스


    GraphQL 유형 시스템에는 인터페이스가 있습니다.인터페이스는 인터페이스를 실현하기 위해 이 필드를 포함해야 하는 특정한 필드를 공개했다.예를 들어 우리는 출판물 인터페이스를 서적이나 잡지로 표시할 수 있다.이러한 유형은 제목과 발표 날짜를 포함한 공통된 특징을 가지고 있다.

    작가는 책과 잡지를 동시에 출판할 가능성이 높다. 인터페이스 때문에 특정한 유형의 출판물에 의존할 필요가 없다. 이런 상황에서 우리는 더욱 대규모의 추상, 즉 출판물을 사용할 수 있다.

    협회


    재미있는 메커니즘은 같은 필드가 없는 대상을 표시할 수 있는 연합 형식입니다.좋은 예는 검색엔진에 대한 검색이다. 검색엔진은 책 이름과 저자 이름을 검색할 수 있다.이 설명을 사용하여 다음 내용을 질의할 수 있습니다.
    union SearchResult = Book | Author
    
    type Query {
      search(text: String!): SearchResult
    }
    
    query {
      search(text: "Park") {
        ... on Book {
          title
        }
        ... on Author {
          name
        }
      }
    }
    
    그래서 우리는 답을 보게 될 것이다.
        {
          "data": {
            "search": [
              {
                "name": "Jurassic Park",
              },
              {
                "name": "Jessica Park",
              }
            ]
          }
        }
    
    비주얼 편집기의 모양을 확인합니다.

    신고 방안


    API 스키마를 정의할 때 쿼리와 변이 두 가지 최상위 요소를 사용할 수 있습니다. 이 요소는 다른 모든 요소와 같은 방식으로 생성된 일반 객체입니다.API의 가능성을 설명합니다.프로젝트 자체의 정의는 매우 간단하다.
    schema {
      query: Query
      mutation: Mutation
    }
    
    type Query {
    }
    
    type Mutation {
    }
    

    조회


    쿼리는 모드의 필수 요소이며 API 읽기를 담당합니다.객체에 정의된 모든 필드는 다양한 API 끝점과 비교할 수 있습니다.공인된 원칙은 검색을 통해 발표된 요소는 다운로드할 실체를 명확하게 지정하는 명사이다. 위의 예시에서 책과 author이다.전체적인 상황을 더욱 잘 설명하기 위해 이전의 대상 정의를 조회로 이동할 수 있다.
    schema {
      query: Query
    }
    
    type Query {
      book(id: ID!): Book
      author(id: ID!): Author
    }
    
    type Book {
      id: ID!
      title: String!
      shortDescription: String!
      description: String
      pages: Int!
      isbn: String!
      releaseDate: String!
      isBookOftheYear: Boolean!
      author: Author!
    }
    
    type Author {
      id: ID!
      name: String!
      bio: String
      sex: String!
      books: [Book!]!
    }
    

    논거


    몇몇 줄에서 필드의 성명이 이전의 상황과 약간 다르다는 것을 볼 수 있습니다. (예를 들어 책 (id:String!)여기에서 필드 이름 외에 다른 성명이 있는 괄호를 볼 수 있습니다. 검색에 매개 변수를 입력하기만 하면 됩니다. 이를 바탕으로 매개 변수를 전달하고 이 매개 변수에 따라 데이터를 다운로드할 수 있습니다.위 예제에서는 사용자 id가 필요하며 다음과 같은 쿼리를 수행합니다.
    query {
      book(id: "1234") {
        title
        isbn
      }
    }
    

    돌변하다


    변이는 API를 통해 응용 프로그램에 항목을 추가, 편집 또는 삭제할 수 있는 선택 사항입니다.그 정의는 유형 조회와 같다.유일한 차이점은 필드를 정의하는 원칙이다. 돌연변이 검색과 달리 필드는 통상적으로 동사라고 불리며 실행 동작을 명확하게 정의할 수 있다.상술한 예에 대한 보충으로 새 책을 창작할 가능성을 높일 만하다.

    입력 유형


    우리가 돌연변이의 예시 성명에 들어가기 전에 유형 시스템과 관련된 부분의 모든 기본 유형을 토론할 때 한 가지 유형을 더 소개할 필요가 있다.GraphQL을 통해 응용 프로그램에서 새 요소를 수정하거나 만들기 위해 키워드 형식이 아닌 입력을 사용하는 것은 일반 객체와 매우 유사합니다.
    schema {
      query: Query
      mutation: Mutation
    }
    
    type Mutation {
      createAuthor(input: AuthorInput): Author
      updateAuthor(id: ID!, input: AuthorInput): Author
    }
    
    input AuthorInput {
      name: String!
      bio: String
      sex: String!
    }
    
    위의 예에서createAuthor와 updateAuthor 작업은 AuthorInput 대상을 매개 변수로 하고 Author 대상을 되돌려주기를 기대할 수 있습니다.선언된 스키마에 대해 새 책을 만드는 데는 다음과 같은 작업이 필요합니다.
    mutation {
      createAuthor(input: {
        name: String!
        bio: String
        sex: String!
      }) {
        id
        title
      }
    }
    
    가장 좋은graphql 강좌를 찾고 있다면 post 을 보십시오.

    좋은 웹페이지 즐겨찾기