Можно ли преобразовать возвращаемый тип для преобразователя GraphQL

У меня есть graphene-django GraphQL API, в который я добавил пользовательские директивы и промежуточное ПО, которые очень похожи на то, что предлагает graphene-django-extras. Есть несколько мест, где типы перечислений возвращаются как поле graphene.Int(), я хотел бы иметь возможность использовать директиву для преобразования этого graphene.String(), но она не делает этого сама по себе. например.

{
  foo {
    bar            # return Int
    # vs
    bar @readable  # return String
  }
}

Это вообще возможно? Я просматриваю поля ResolvInfo, и там что-то есть для возвращаемого типа, но первые попытки не работают.

Изменить: FWIW Я не думаю, что имеет значение, что API в настоящее время разрабатывается с использованием Python и Graphene. Вопрос больше в том, поддерживает ли GraphQL это вообще. Я предполагаю, что если этого не произойдет, то ни один язык или библиотека не сделают это возможным.


person geoffjay    schedule 30.11.2020    source источник


Ответы (1)


На самом деле это не в духе graphQL - иметь переменный тип вывода. Так что, строго говоря, не стоит пытаться это сделать. При этом вместо этого вы можете легко добавить еще одно поле для другого типа, т.е.

type Foo {
    barStr: String
    barInt: Int
}

а затем просто спросите тот, который вы хотите в своем запросе.

person Mark Chackerian    schedule 08.12.2020