Naar de inhoud

GraphQL naar Java-klassentransformator — Numio

Genereert Java-klassen voor de opsommingen en invoertypen in een GraphQL-schema met behulp van @graphql-codegen/java. Alles is genest in een openbare klasse Types; objecttypen, interfaces en queries worden niet geconverteerd.

Java-invoerklassen maken voor mutatieargumenten in een graphql-java-server.

GraphQL Schema

Java (Enum and Input)

Wanneer gebruik je dit?

  • Java-invoerklassen maken voor mutatieargumenten in een graphql-java-server.
  • Java-enums verkrijgen die de GraphQL-enumwaarden exact weerspiegelen.

Hoe werkt het

  1. Plak een schema met opsomming en invoerdefinities in de GraphQL Schema-editor.
  2. Bekijk de gegenereerde Types-klasse: één openbare opsomming per GraphQL-opsomming en één openbare statische klasse per invoertype.
  3. Kopieer het naar een Types.java-bestand en wijzig pakket com.example.graphql naar uw eigen pakket.

GraphQL-schema

enum Role {
  ADMIN
  EDITOR
}

input CreateUserInput {
  name: String!
  email: String
  role: Role = EDITOR
  tags: [String!]
}

type Query {
  ping: String
}

Java-enums en invoerklassen

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");
…

Details en beperkingen

De pakketregel is standaard com.example.graphql, omdat de pagina geen pakketinstelling heeft. Wijzig het in het pakket van uw project.

Elke invoerklasse heeft een constructor die een Map<String, Object> met argumenten leest, plus getters en setters. Standaardwaarden uit het schema (rol: Role = EDITOR) worden niet toegepast.

Typetoewijzing: String naar String, Int naar Integer, Float naar Double, Boolean naar Boolean, ID naar Object, lijsten naar Iterable<T>. Invoernamen die niet eindigen op Invoer krijgen het achtervoegsel (A wordt AInput).

FAQ

Waarom ontbreken mijn objecttypen in de Java-uitvoer?

De Java-plug-in genereert alleen opsommingen en invoertypen. Voor gegevensophaalinterfaces per objecttype gebruikt u de optie JAVA Resolvers Signature op de pagina GraphQL to Resolvers Signature.

Hoe worden geneste invoertypen afgehandeld?

Een veld waarvan het type een andere invoer is, wordt die klasse, en de constructor bouwt het op vanuit de geneste kaart, bijvoorbeeld new BInput((Map<String, Object>) args.get("nested")).

Draait het op een server?

Nee. De codegenerator draait in een Web Worker in uw browser.

Specificaties en referenties