2016-04-06 11 views
8

Czy GraphQL ma możliwość, aby klient poinformował serwer, że chce pola tylko wtedy, gdy to pole nie jest null?Zapytanie GraphQL: zawiera tylko pole, jeśli nie jest puste.

Zważywszy na zapytanie

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

odpowiedź powinna wtedy wyglądać

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

zamiast

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

to możliwe bez naruszania specyfikację GraphQL?

+0

Po prostu ciekawa informacja: jaki jest przypadek użycia tego zachowania? –

+1

@AhmadFerdousBinAlam Mam klasę danych Kotlin z wartościami domyślnymi (nie wartościami zerowymi), których nie chcę, aby były nadpisywane podczas deserializacji. – FWeigl

+0

@Ahmad Ferdous, jeśli chodzi o przypadek użycia, co jeśli serwer zwróci tablice elementów, które mają rozrzedne dane? jak każdy obiekt ma wiele pól, z których tylko kilka zawiera coś raczej niż zero. Czy nie byłoby lepiej wykluczyć te pola z ładunku, aby zmniejszyć ogólny rozmiar odpowiedzi interfejsu API? – margaretkru

Odpowiedz

4

O ile mi wiadomo, nie jest to możliwe, są directives takie jak @skip i @include. Dyrektywy, ale potrzebują zmiennej, myślę, że możesz przedstawić swoją sprawę zespołowi grafql, aby rozszerzyć dyrektywy tak, aby zawierały tylko pole, jeśli nie jest ono zerowe.

Powiązane problemy