Почему GraphQl заставляет вас соответствовать требованиям переменных в запросах? - PullRequest
0 голосов
/ 24 марта 2020

Допустим, у моего сервера GraphQl определен запрос, подобный этому

query getUser(name: String!)

, тогда я делаю запрос, подобный этому

query getUser(name: String) {
  getUser(name: $name)
...

Я получаю ошибку, подобную этой

Тип переменной 'String' не соответствует ожидаемому типу 'String!

Почему он пытается сопоставить это вместо проверки, было ли уже передано значение? На мой взгляд, это не нужно и заставляет клиентское приложение меняться по глупым причинам. Может быть, я что-то здесь упускаю.

1 Ответ

0 голосов
/ 24 марта 2020

! указывает на тип, не подлежащий обнулению. Не обнуляемый аргумент не может быть опущен или ему может быть передано значение null. Если аргумент передается переменной, тип этой переменной также должен быть ненулевым. Если бы тип переменной имел значение nullable, это означало бы, что null будет допустимым значением для переменной, но null является , а не допустимым значением для аргумента.

С другой стороны С другой стороны, аргумент, тип которого nullable , может принимать переменные, которые могут быть как nullable, так и non-nullable, потому что нет несовместимости в диапазонах возможных значений.

Это все контуры в валидации часть spe c.

...