GraphQL: Что должен вернуть самоанализ для InputValue defaultValue, если он явно указан как ноль? - PullRequest
0 голосов
/ 21 октября 2019

В GraphQL, если у меня есть следующая система типов:

  type MyType {
    myField(arg : Int = null) : Int
  }

, а затем я выполняю следующий интроспективный запрос на myField:

{ __type(name: "MyType")
  fields {
    args {
      defaultValue
    }
  }
}

, если это поле defaultValue возвращаетзначение null или строка "null"?

Очевидно, что для целей времени выполнения по умолчанию ясно, что значение null , а не String, должно бытьиспользуемый. Тем не менее, для самоанализа в поле defaultValue поля __ InputValue , так как значение по умолчанию null было явно указано системой типов, мне интересно, если этодолжно быть отражено в возвращаемом значении этого поля.

4.5.4 спецификации гласит:


" defaultValue может возвращать кодировку String (используя язык GraphQL) значения по умолчанию, используемого этим входным значением в условии, что значение не предоставляется во время выполнения. Если это входное значение не имеет значения по умолчанию, возвращает ноль."


Это, кажется, говоритчто для явно указанного defaultValue null интроспекция должна возвращать строковую кодировку GraphQL, равную «null».

Это также говорит мне, что String defaultValues ​​действительно нужно возвращать свстроенные экранированные кавычки, в противном случае defaultValue 5 (Int) будет неразличимо от "5" (String).

OTOH, тип InputValue должен обеспечивать потреблениеИз этих закодированных значений defaultValue необходим необходимый контекст, так что ...

Спасибо за любые разъяснения.

...