Trasformatore di classi GraphQL in Java — Numio
Genera classi Java per le enumerazioni e i tipi di input in uno schema GraphQL utilizzando @graphql-codegen/java. Tutto è annidato all'interno di una classe pubblica Types; i tipi di oggetto, le interfacce e le query non vengono convertiti.
Creazione di classi di input Java per argomenti di mutazione in un server graphql-java.
Quando usarlo
- Creazione di classi di input Java per argomenti di mutazione in un server graphql-java.
- Ottenere enumerazioni Java che rispecchiano esattamente i valori enum GraphQL.
Come si usa
- Incolla uno schema con l'enumerazione e le definizioni di input nell'editor dello schema GraphQL.
- Esamina la classe Types generata: un'enumerazione pubblica per enum GraphQL e una classe statica pubblica per tipo di input.
- Copialo in un file Types.java e modifica il pacchetto com.example.graphql nel tuo pacchetto.
Schema GraphQL
enum Role {
ADMIN
EDITOR
}
input CreateUserInput {
name: String!
email: String
role: Role = EDITOR
tags: [String!]
}
type Query {
ping: String
}Enumerazioni Java e classi di input
package com.example.graphql;
import java.util.HashMap;
import java.util.Map;
public class Types {
public enum Role {
ADMIN,
EDITOR
}
public static class CreateUserInput {
private String name;
private String email;
private Role role;
private Iterable<String> tags;
public CreateUserInput(Map<String, Object> args) {
if (args != null) {
this.name = (String) args.get("name");
this.email = (String) args.get("email");
if (args.get("role") instanceof Role) {
this.role = (Role) args.get("role");
…Dettagli e limiti
Per impostazione predefinita la riga del pacchetto è com.example.graphql, perché la pagina non ha impostazioni del pacchetto. Cambialo nel pacchetto del tuo progetto.
Ogni classe di input ha un costruttore che legge un Map<String, Object> di argomenti, oltre a getter e setter. I valori predefiniti dello schema (ruolo: Role = EDITOR) non vengono applicati.
Mappatura dei tipi: da stringa a stringa, da int a intero, da float a double, da booleano a booleano, da ID a oggetto, dagli elenchi a Iterable<T>. I nomi degli input che non terminano con Input ricevono il suffisso (A diventa AInput).
FAQ
Perché i miei tipi di oggetto mancano dall'output Java?
Il plugin Java genera solo enumerazioni e tipi di input. Per le interfacce di recupero dati per tipo di oggetto, utilizzare l'opzione Firma dei risolutori JAVA nella pagina Firma dei risolutori da GraphQL.
Come vengono gestiti i tipi di input annidati?
Un campo il cui tipo è un altro input diventa quella classe e il costruttore lo costruisce dalla mappa nidificata, ad esempio new BInput((Map<String, Object>) args.get("nested")).
Funziona su un server?
No. Il generatore di codice viene eseguito in un Web Worker nel tuo browser.