GraphQL Scalars 1.0이 출시되었습니다!

5848 단어 graphqlscalarsgraphql

This article was published on 2019-08-08 by @ The Guild Blog



GraphQL 사양에는 기본적으로 Int , Float , String , BooleanID 스칼라 유형이 있습니다. 이러한 스칼라 유형은 클라이언트와 서버 간에 데이터를 전송하기 전에 데이터를 식별하고 유효성을 검사하는 데 도움이 됩니다. 그러나 앱 데이터를 더 잘 설명하고 검증하는 데 도움이 되도록 GraphQL 애플리케이션에 더 구체적인 스칼라가 필요할 수 있습니다.

스칼라를 사용한 검증



예를 들어 String 필드가 있지만 정규식을 사용하여 향후 또는 진행 중인 문자열 데이터의 유효성을 검사해야 합니다. 따라서 각 끝에 이 유효성 검사가 있어야 합니다. 하나는 클라이언트에 있고 다른 하나는 서버에 있으며 소스에 다른 하나가 있을 수 있습니다. 프로젝트의 다른 부분에서 동일한 논리를 복제하는 대신 GraphQL 내부에서 유효성 검사를 수행하는 EmailAddress 스칼라 유형을 사용할 수 있습니다.

직렬화 및 구문 분석



GraphQL 스칼라 유형을 사용하는 다른 이점은 데이터를 전송하는 동안 구문 분석 및 직렬화하는 것입니다. 예를 들어 DateTime 데이터를 가지고 있지만 JSON의 제약으로 인해 String로 전송되고, 데이터를 받아 전달할 때마다 문자열을 파싱하고 자바스크립트Date 인스턴스를 생성하면서 직렬화도 해야 한다. 클라이언트에 전달하기 전에 문자열로 변환합니다. 구현에 해당 논리를 사용하는 대신 DateTime 스칼라를 사용할 수 있으며 문자열, 숫자 및 부울과 같은 기본 유형 중 하나인 것처럼 네이티브 JavaScriptDate 인스턴스로 직접 작업할 수 있습니다.

새로운 기능은 무엇입니까?



We've 최근 OK-Grow!의 놀라운 팀의 GraphQL-Scalars 라이브러리 중!

그 이후로 TypeScript를 사용하여 라이브러리를 완전히 다시 작성하고, 모든 종속성을 업그레이드하고, 모든 문제와 PR을 닫고, BigInt(Long) , GUID , HexColorCode , Hexadecimal 와 같은 새로운 스칼라로 패키지의 스칼라 수를 늘렸습니다. IPv4 , IPv6 , ISBN , MAC , JSON 등. README 에서 모든 스칼라를 볼 수 있습니다.

조롱



Apollo Server는 Int , String , Float , IDBoolean 와 같은 모의 내장 스칼라를 제공합니다. 스칼라에 대해 동일한 것이 필요하면 어떻게 합니까? 따라서 이 패키지의 각 스칼라에 대한 모의 기능을 제공합니다. 스키마를 조롱하기 위해 서버에 쉽게 추가할 수 있습니다.

import { ApolloServer } from 'apollo-server'
import { makeExecutableSchema } from 'graphql-tools'
// import all scalars and resolvers
import { typeDefs, resolvers, mocks } from 'graphql-scalars'
// Alternatively, import individual scalars and resolvers
// import { DateTimeResolver, DateTimeTypeDefinition, DateTimeMock, ... } from "graphql-scalars"

const server = new ApolloServer({
  typeDefs: [
    // use spread syntax to add scalar definitions to your schema
    ...typeDefs
    // DateTimeDefinition,
    // ...
    // ... other type definitions ...
  ],
  resolvers: {
    // use spread syntax to add scalar resolvers to your resolver map
    ...resolvers
    // DateTimeResolver,
    // ...
    // ... remainder of resolver map ...
  },
  mocks: {
    // use spread syntax to add scalar resolvers to your resolver map
    ...mocks
    // DateTimeMock,
    // ...
    // ... other mocks ...
  }
})


특별한 감사



이 패키지를 만든 OK-Grow, adriano-di-giovanni, npm에 대한 graphql-scalars 이름 제공, 그의 포크에서 다른 스칼라 구현을 가져올 수 있는 Saeris, stems에 대한 graphql-bigint 감사합니다. ) 패키지, abhiaiyer91 그의 graphql-currency-scalars 패키지 및 taion 그의 graphql-type-json .

좋은 웹페이지 즐겨찾기