Вставка значений переменных в запрос GraphQL

#python #graphql #gql

#python #graphql #gql

Вопрос:

У меня есть базовый запрос graphql в виде строки, который выполняется, как и ожидалось, прежде чем я попытаюсь его изменить и добавить входные переменные (запрос длинный, поэтому я включу только начало запроса, в который нужно вставить переменную)

 query {
  vessels {
    pageInfo {
      hasNextPage
      endCursor
    }
    nodes {
...
 

Это работает и возвращает ожидаемый ответ:

 try:
    response = client.execute(gql(query))
except BaseException as e:
    logger.error(e)
    raise
 

Схема позволяет запрашивать конкретные сосуды, поэтому я последовал примеру в документации gql здесь, чтобы ввести список переменных

 query {
  vessels (mmsi: $code ) {
    pageInfo {
      hasNextPage
      endCursor
    }
    nodes {
...
 

Однако это не работает и выдает ошибку:

 params = {"code": [775903449, 775982824]}

try:
    response = client.execute(gql(query), variable_values=params)
except BaseException as e:
    logger.error(e)
    raise
 
 graphql.error.base.GraphQLError: Variable "$code" is not defined.
 

Что я здесь делаю не так со вставкой / заменой переменной в строку запроса? Любая помощь будет оценена!

Ответ №1:

Могу ответить на свой собственный вопрос — нужно определить переменную в первой части запроса!

 query ($code: [MMSI!]) {
  vessels (mmsi: $code ){
    pageInfo {
      hasNextPage
      endCursor
    }
    nodes {