GraphQL 리졸버의 서명 생성기 — Numio
GraphQL 스키마에서 resolver 타입 시그니처를 생성합니다. TypeScript(기본값, typescript-resolvers), Flow(flow-resolvers), Java(java-resolvers)를 지원합니다. TypeScript 출력에는 스키마 타입마다 타입이 지정된 resolver 객체 하나를 가진 Resolvers 맵이 포함됩니다.
Apollo Server나 graphql-yoga에 전달하는 resolvers 객체에 타입을 지정해 parent, args, 반환값을 검사합니다.
이럴 때 사용하세요
- Apollo Server나 graphql-yoga에 전달하는 resolvers 객체에 타입을 지정해 parent, args, 반환값을 검사합니다.
- JAVA Resolvers Signature 옵션으로 타입별 graphql-java DataFetcher 인터페이스를 얻습니다.
사용 방법
- GraphQL Schema 편집기에 스키마를 붙여 넣습니다.
- 출력 드롭다운에서 TypeScript Resolvers Signature, Flow Resolvers Signature, JAVA Resolvers Signature 중 하나를 선택합니다.
- 출력을 복사합니다. TypeScript라면 resolver 맵에 생성된 Resolvers 타입을 지정합니다.
GraphQL 스키마
type Query {
user(id: ID!): User
}
type User {
id: ID!
name: String
}Resolver 시그니처
import { GraphQLResolveInfo } from "graphql"
…
export type QueryResolvers<
ContextType = any,
ParentType extends
ResolversParentTypes["Query"] = ResolversParentTypes["Query"],
> = {
user?: Resolver<
Maybe<ResolversTypes["User"]>,
ParentType,
ContextType,
RequireFields<QueryUserArgs, "id">
>
}
export type UserResolvers<
ContextType = any,
ParentType extends
ResolversParentTypes["User"] = ResolversParentTypes["User"],
> = {
id?: Resolver<ResolversTypes["ID"], ParentType, ContextType>
name?: Resolver<Maybe<ResolversTypes["String"]>, ParentType, ContextType>
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>
}
…세부 정보 및 제한 사항
QueryResolvers 같은 생성 타입은 ContextType = any입니다. 필수 인자는 RequireFields로 타입이 지정되고, 객체 resolver에는 선택적인 __isTypeOf가 포함됩니다.
스키마만 사용합니다. resolver 시그니처는 operation에 의존하지 않으므로 이 페이지에는 Documents 편집기가 없습니다.
Java 옵션은 package com.example.graphql의 public class Resolvers 안에 DataFetcher 메서드로 된 public interface를 출력합니다. 모든 처리는 브라우저 Web Worker에서 실행됩니다.
FAQ
직접 만든 context 타입을 지정하려면 어떻게 하나요?
페이지에는 mapper나 contextType 옵션이 없습니다. 생성된 resolver 타입은 모두 ContextType을 받으므로 Resolvers<MyContext>처럼 제네릭으로 context 타입을 전달하세요.
resolver 필드가 모두 선택 사항인 이유는 무엇인가요?
GraphQL 서버는 부모 객체의 프로퍼티를 읽는 기본 resolver로 대체하므로, typescript-resolvers는 기본적으로 모든 필드 resolver를 선택 사항으로 표시합니다.
Java 옵션은 ID 필드의 타입을 어떻게 지정하나요?
ID 타입과 객체 타입 필드는 DataFetcher<Object>를 반환하고, String 필드는 DataFetcher<String>이 됩니다.