Convertir GraphQL en classes Java — Numio
Génère des classes Java pour les enums et les types input d'un schéma GraphQL avec @graphql-codegen/java. Tout est imbriqué dans public class Types ; les types objet, les interfaces et les queries ne sont pas convertis.
Créer des classes input Java pour les arguments de mutations dans un serveur graphql-java.
Quand l’utiliser
- Créer des classes input Java pour les arguments de mutations dans un serveur graphql-java.
- Obtenir des enums Java qui reflètent exactement les valeurs des enums GraphQL.
Mode d’emploi
- Collez dans l'éditeur GraphQL Schema un schéma contenant des définitions enum et input.
- Examinez la classe Types générée : un public enum par enum GraphQL et une public static class par type input.
- Copiez-la dans un fichier Types.java et remplacez package com.example.graphql par votre propre package.
Schéma GraphQL
enum Role {
ADMIN
EDITOR
}
input CreateUserInput {
name: String!
email: String
role: Role = EDITOR
tags: [String!]
}
type Query {
ping: String
}Enums et classes input Java
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");
…Détails et limites
La ligne package vaut com.example.graphql par défaut, car la page n'a pas de réglage de package. Remplacez-la par le package de votre projet.
Chaque classe input a un constructeur qui lit une Map<String, Object> d'arguments, ainsi que des getters et setters. Les valeurs par défaut du schéma (role: Role = EDITOR) ne sont pas appliquées.
Correspondance des types : String vers String, Int vers Integer, Float vers Double, Boolean vers Boolean, ID vers Object, listes vers Iterable<T>. Les noms d'input qui ne se terminent pas par Input reçoivent le suffixe (A devient AInput).
FAQ
Pourquoi mes types objet sont-ils absents de la sortie Java ?
Le plugin java ne génère que des enums et des types input. Pour des interfaces de data fetcher par type objet, utilisez l'option JAVA Resolvers Signature de la page GraphQL to Resolvers Signature.
Comment les types input imbriqués sont-ils gérés ?
Un champ dont le type est un autre input devient cette classe, et le constructeur la construit à partir de la map imbriquée, par exemple new BInput((Map<String, Object>) args.get("nested")).
Cela s'exécute-t-il sur un serveur ?
Non. Le générateur de code s'exécute dans un Web Worker de votre navigateur.