2017-12-19 3 views
1

erforsche ich GraphQL auszusetzen und würde gerne wissen, ob es eine Möglichkeit ist beispielsweise das Antwortfeld Umbenennung i mit diesem Bereich ein POJO habeWie graphql Feld mit unterschiedlichen Namen

class POJO { 
    Long id; 
    String name; 
} 

GraphQL query:

type POJO { 
    id: Long 
    name: String 
} 

Meine Antwort ist so etwas wie dieses

{ 
    "POJO" { 
    "id": 123, 
    "name": "abc" 
    } 
} 

Kann ich den Namen Feld einige umbenennen Ding wie Benutzername, so dass meine Antwort ist unter

{ 
    "POJO" { 
    "id": 123, 
    "userName": "abc" 
    } 
} 

Antwort

2

Sie GraphQL Aliases können Sie einzelne Tasten in der JSON-Antwort ändern.

Wenn dies Ihre ursprüngliche Abfrage

query { 
    POJO { 
    id 
    name 
    } 
} 

können Sie einen GraphQL alias userName für das Feld name wie so vorstellen:

query { 
    POJO { 
    id 
    userName: name 
    } 
} 

Sie auch GraphQL Aliase verwenden können the same query or mutation field multiple times in derselben zu verwenden GraphQL-Operation. Dies ist besonders interessant bei der Verwendung von Feldparametern:

+0

Ich möchte meine Abfrage nicht ändern, ich dachte, wenn ich dieses Feld auf einen anderen Namen zuordnen kann, bevor das Ergebnis aus dem Backend zurückgegeben wird, ist das möglich? –

+0

Warum benennst du das Feld nicht einfach direkt im Schema? – marktani

0

Sieht aus wie GraphQLName Annotation kann helfen.

Beispiel von documentation: "Darüber hinaus kann @GraphQLName verwendet werden, um Feldnamen zu überschreiben. Sie können @GraphQLDescription verwenden, um eine Beschreibung festzulegen."

Diese können auch für Feldparameter verwendet werden:

public String field(@GraphQLName("val") String value) { 
    return value; 
} 
0

Die Frage ist: , wie Sie das Schema in erster Linie schaffen? Es gibt keine inhärente Verbindung zwischen Java und GraphQL-Typen - sie sind völlig unabhängig, es sei denn, Sie korrelieren sie. So können Sie die Felder wie gewünscht im Schema benennen und einen Resolver (DataFetcher) erstellen, der den Wert von überall erhält (also auch jedes POJO-Feld).

Wenn Sie ein Tool zum Generieren des Schemas aus Java-Typen verwenden (graphql-java-annotations, graphql-spqr usw.), verwenden Sie die Funktionen dieses Tools, um das Mapping zu steuern. Beide genannten Tools ermöglichen die Anpassung des Mappings über Annotationen. GraphQL-SPQR ermöglicht dasselbe auch über die externe Konfiguration.

Wenn Sie Ihre Frage weiter klären, kann ich Ihnen eine genauere Antwort geben.

Verwandte Themen