Vai al contenuto

GraphQL Generatore di firme dei risolutori — Numio

Genera firme di tipo per i resolver di uno schema GraphQL: TypeScript (predefinito, typescript-resolvers), Flow (flow-resolvers) o Java (java-resolvers). L’output TypeScript include una mappa Resolvers con un oggetto resolver tipizzato per ciascun tipo dello schema.

Digitando l'oggetto risolutore passato ad Apollo Server o graphql-yoga in modo che vengano controllati parent, args e valori restituiti.

GraphQL Schema

Quando usarlo

  • Digitando l'oggetto risolutore passato ad Apollo Server o graphql-yoga in modo che vengano controllati parent, args e valori restituiti.
  • Ottenere le interfacce graphql-java DataFetcher per ciascun tipo con l'opzione Firma risolutori JAVA.

Come si usa

  1. Incolla lo schema nell'editor dello schema GraphQL.
  2. Scegliere Firma dei Resolver TypeScript, Firma dei Resolver Flow o Firma dei Resolver JAVA nel menu a discesa dell'output.
  3. Copia l'output; per TypeScript, annota la mappa del risolutore con il tipo di risolutore generato.

Schema GraphQL

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

type User {
  id: ID!
  name: String
}

Firme dei risolutori

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

Dettagli e limiti

I tipi generati, come QueryResolvers, hanno ContextType = any; gli argomenti obbligatori sono tipizzati con RequireFields e i resolver degli oggetti includono un __isTypeOf facoltativo.

Viene usato soltanto lo schema. Le firme dei resolver non dipendono dalle operazioni, quindi la pagina non ha un editor Documents.

L’opzione Java produce interfacce pubbliche di metodi DataFetcher all’interno di public class Resolvers, nel package com.example.graphql. Tutto viene eseguito in un Web Worker del browser.

FAQ

Come posso impostare il mio tipo di contesto?

La pagina non ha opzioni di mappatura o contextType. Passa il tipo di contesto come generico, ad esempio Resolvers<MyContext>, poiché ogni tipo di risolutore generato accetta ContextType.

Perché tutti i campi del risolutore sono facoltativi?

typescript-resolvers contrassegna ogni campo risolutore come opzionale per impostazione predefinita perché i server GraphQL ricadono sui risolutori predefiniti che leggono la proprietà dall'oggetto principale.

In che modo l'opzione Java digita i campi ID?

I campi di tipo ID e i tipi di oggetto vengono restituiti come DataFetcher<Object>; I campi stringa diventano DataFetcher<String>.

Specifiche e riferimenti