Przejdź do treści

Generator sygnatur resolwerów GraphQL — Numio

Generuje sygnatury typu mechanizmu rozpoznawania nazw dla schematu GraphQL: TypeScript (domyślne, narzędzia do rozpoznawania języka TypeScript), Flow (programy do rozpoznawania przepływu) lub Java (programy do rozpoznawania języka Java). Dane wyjściowe TypeScript zawierają mapę resolwerów z jednym obiektem resolwera o określonym typie na każdy typ schematu.

Wpisanie obiektu rozpoznawania nazw przekazanego do serwera Apollo lub graphql-yoga, aby sprawdzić wartości nadrzędne, argumenty i zwracane.

GraphQL Schema

Kiedy go używać

  • Wpisanie obiektu rozpoznawania nazw przekazanego do serwera Apollo lub graphql-yoga, aby sprawdzić wartości nadrzędne, argumenty i zwracane.
  • Pobieranie interfejsów graphql-java DataFetcher dla każdego typu za pomocą opcji podpisu modułu tłumaczącego JAVA.

Jak używać

  1. Wklej schemat do edytora schematów GraphQL.
  2. Wybierz opcję Podpis modułu przeliczającego TypeScript, Podpis modułu przeliczającego przepływ lub Podpis modułu przeliczającego JAVA z listy rozwijanej wyników.
  3. Skopiuj dane wyjściowe; w przypadku TypeScript opisz swoją mapę modułu rozpoznawania nazw wygenerowanym typem modułu rozpoznawania nazw.

Schemat GraphQL

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

type User {
  id: ID!
  name: String
}

Podpisy rozwiązywania problemów

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

Szczegóły i ograniczenia

Wygenerowane typy, takie jak QueryResolvers, mają ContextType = any; wymagane argumenty są wpisywane za pomocą RequireFields, a mechanizmy rozpoznawania obiektów zawierają opcjonalną wartość __isTypeOf.

Używany jest tylko schemat. Podpisy modułu rozpoznawania nazw nie zależą od operacji, więc strona nie ma edytora Dokumentów.

Opcja Java generuje publiczne interfejsy metod DataFetcher wewnątrz publicznych klas Resolver, w pakiecie com.example.graphql. Wszystko działa w przeglądarce Web Worker.

FAQ

Jak ustawić własny typ kontekstu?

Na stronie nie ma opcji mapowania ani contextType. Przekaż swój typ kontekstu jako ogólny, na przykład Resolvers<MyContext>, ponieważ każdy wygenerowany typ mechanizmu rozpoznawania nazw akceptuje ContextType.

Dlaczego wszystkie pola rozpoznawania nazw są opcjonalne?

Typescript-resolvers domyślnie oznaczają każdy program rozpoznawania pól jako opcjonalny, ponieważ serwery GraphQL korzystają z domyślnych programów rozpoznawania nazw, które odczytują właściwość z obiektu nadrzędnego.

W jaki sposób opcja Java wpisuje pola ID?

Pola typu ID i typy obiektów zwracane są jako DataFetcher<Object>; Pola łańcuchowe mają postać DataFetcher<String>.

Specyfikacje i referencje