Przejdź do treści

Konwerter GraphQL na klasy Java — Numio

Generuje klasy Java dla wyliczeń i typów danych wejściowych w schemacie GraphQL przy użyciu @graphql-codegen/Java. Wszystko jest zagnieżdżone w klasie publicznej. Typy; typy obiektów, interfejsy i zapytania nie są konwertowane.

Tworzenie klas wejściowych Java dla argumentów mutacji na serwerze graphql-java.

GraphQL Schema

Java (Enum and Input)

Kiedy go używać

  • Tworzenie klas wejściowych Java dla argumentów mutacji na serwerze graphql-java.
  • Pobieranie wyliczeń Java, które dokładnie odzwierciedlają wartości wyliczeń GraphQL.

Jak używać

  1. Wklej schemat z definicjami wyliczeniowymi i wejściowymi do edytora schematów GraphQL.
  2. Przejrzyj wygenerowaną klasę Types: jedno publiczne wyliczenie na wyliczenie GraphQL i jedna publiczna klasa statyczna na typ wejściowy.
  3. Skopiuj go do pliku Types.java i zmień pakiet com.example.graphql na własny pakiet.

Schemat GraphQL

enum Role {
  ADMIN
  EDITOR
}

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

type Query {
  ping: String
}

Wyliczenia Java i klasy wejściowe

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

Szczegóły i ograniczenia

Domyślną linią pakietu jest com.example.graphql, ponieważ na stronie nie ma ustawień pakietu. Zmień go na pakiet swojego projektu.

Każda klasa wejściowa ma konstruktor, który odczytuje argumenty Map<String, Object> oraz elementy pobierające i ustawiające. Domyślne wartości ze schematu (rola: Rola = EDITOR) nie są stosowane.

Mapowanie typów: String na String, Int na Integer, Float na Double, Boolean na Boolean, ID na Object, listy na Iterable<T>. Nazwy wejść, które nie kończą się na Wejście, otrzymują przyrostek (A staje się AInput).

FAQ

Dlaczego w wynikach Java brakuje moich typów obiektów?

Wtyczka Java generuje tylko wyliczenia i typy danych wejściowych. W przypadku interfejsów pobierania danych według typu obiektu użyj opcji JAVA Podpis modułu przeliczającego na stronie GraphQL na podpis modułu przeliczającego.

Jak obsługiwane są zagnieżdżone typy danych wejściowych?

Pole, którego typem jest inne wejście, staje się tą klasą, a konstruktor buduje je na podstawie zagnieżdżonej mapy, na przykład new BInput((Map<String, Object>) args.get("nested").

Czy działa na serwerze?

Nie. Generator kodu działa w module Web Worker w Twojej przeglądarce.

Specyfikacje i referencje