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.
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ć
- Wklej schemat do edytora schematów GraphQL.
- 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.
- 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>.