Naar de inhoud

GraphQL Resolvers handtekeninggenerator — Numio

Genereert handtekeningen van het type solver voor een GraphQL-schema: TypeScript (standaard, typescript-resolvers), Flow (flow-resolvers) of Java (java-resolvers). De TypeScript-uitvoer bevat een Resolvers-kaart met één getypt solver-object per schematype.

Het typen van het solvers-object wordt doorgegeven aan Apollo Server of graphql-yoga, zodat ouder-, args- en retourwaarden worden gecontroleerd.

GraphQL Schema

Wanneer gebruik je dit?

  • Het typen van het solvers-object wordt doorgegeven aan Apollo Server of graphql-yoga, zodat ouder-, args- en retourwaarden worden gecontroleerd.
  • Graphql-java DataFetcher-interfaces verkrijgen voor elk type met de JAVA Resolvers Signature-optie.

Hoe werkt het

  1. Plak het schema in de GraphQL Schema-editor.
  2. Kies TypeScript Resolvers Signature, Flow Resolvers Signature of JAVA Resolvers Signature in de vervolgkeuzelijst voor uitvoer.
  3. Kopieer de uitvoer; voor TypeScript annoteert u uw oplosserkaart met het gegenereerde Resolvers-type.

GraphQL-schema

type Query {
  user(id: ID!): User
}

type User {
  id: ID!
  name: String
}

Handtekeningen van de oplosser

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>
}
…

Details en beperkingen

Gegenereerde typen zoals QueryResolvers hebben ContextType = any; vereiste argumenten worden getypt met RequireFields, en objectresolvers bevatten een optionele __isTypeOf.

Alleen het schema wordt gebruikt. De handtekeningen van de Resolver zijn niet afhankelijk van bewerkingen, dus de pagina heeft geen Documenteneditor.

De Java-optie voert openbare interfaces uit van DataFetcher-methoden binnen de openbare klasse Resolvers, in het pakket com.example.graphql. Alles draait in een browser Web Worker.

FAQ

Hoe stel ik mijn eigen contexttype in?

De pagina heeft geen mapper- of contextType-opties. Geef uw contexttype door als het generieke type, bijvoorbeeld Resolvers<MyContext>, aangezien elk gegenereerd resolvertype ContextType accepteert.

Waarom zijn alle oplosservelden optioneel?

typescript-resolvers markeert elke veldresolver standaard optioneel omdat GraphQL-servers terugvallen op standaardresolvers die de eigenschap van het bovenliggende object lezen.

Hoe typt de Java-optie ID-velden?

Velden van het type ID en objecttypen worden geretourneerd als DataFetcher<Object>; Tekenreeksvelden worden DataFetcher<String>.

Specificaties en referenties