2016-04-06 2 views
8

Hat GraphQL die Möglichkeit für den Client, dem Server mitzuteilen, dass ein Feld nur dann gewünscht wird, wenn dieses Feld nicht null ist?GraphQL-Abfrage: nur Feld, wenn nicht Null

die Abfrage

query HeroAndFriends { 
    hero { 
    name 
    friends { 
     name 
    } 
    } 
} 

In Anbetracht der Antwort dann wie

{ 
    "data": { 
    "hero": { 
     "friends": [ 
     { 
      "name": "Luke Skywalker" 
     }, 
     { 
      "name": "Han Solo" 
     }, 
     { 
      "name": "Leia Organa" 
     } 
     ] 
    } 
    } 
} 

statt

{ 
    "data": { 
    "hero": { 
     "name": null, 
     "friends": [ 
     { 
      "name": "Luke Skywalker" 
     }, 
     { 
      "name": "Han Solo" 
     }, 
     { 
      "name": "Leia Organa" 
     } 
     ] 
    } 
    } 
} 

Ist dies möglich, ohne gegen die GraphQL Spezifikation aussehen sollte?

+0

Nur neugierig zu wissen: Was ist der Anwendungsfall dieses Verhaltens? –

+1

@AhmadFerdousBinAlam Ich habe eine Kotlin-Datenklasse mit Standardwerten (nicht null), die beim Deserialisieren nicht überschrieben werden sollen. – FWeigl

+0

@Ahmad Ferdous, in Bezug auf den Anwendungsfall, was passiert, wenn der Server Arrays von Elementen mit spärlichen Daten zurückgibt? So wie jedes Objekt viele Felder hat, von denen nur einige wirklich etwas enthalten und nicht null. Wäre es nicht besser, diese Felder von der Nutzlast auszuschließen, um die Gesamtgröße der API-Antwort zu verringern? – margaretkru

Antwort

4

Soweit ich weiß ist das nicht möglich, es gibt directives wie @skip und @include. Direktiven, aber sie brauchen eine Variable. Ich denke, Sie können sich mit dem graphql-Team dafür einsetzen, dass die Anweisungen so erweitert werden, dass nur das Feld eingeschlossen wird, wenn es nicht null ist.