Я пытаюсь выполнить запросы graphql с помощью встроенного модуля запросов в Python.
# prepare the query with parameters
def get_user(by):
try:
variables = {
"email": "test@test.com"
}
user_query = """
{
getUser($email:String) {
userId
email
firstName
lastName
phoneNumber
department
officeLocation
isAvailable
updatedAt
}
}
"""
path = resolve_url('users', site_id='hub')
# Run gql query
user_data = run_query(user_query, variables=variables, path=path, by=by)
return user_data
except Exception as ex:
raise exc.BadRequest(
'Could not parse the response. Following exception occurred :: {}'.format(ex)
)
Клиент для запуска запросов gql
def run_query(query: str, variables: dict, path: str, by=None):
token = 'some-token'
headers = {'x-internal-api-key': 'Bearer {}'.format(token)}
json = dict({'query': query})
if variables:
json['variables'] = variables
response = requests.post(path, json=json, headers=headers) # Throws 400
if response.status_code == 200:
return response.json()
else:
raise Exception("Query failed to run: {} - {}".format(response.status_code, response.json()))
Это выдает 400 - {'message': 'Syntax Error: Expected Name, found $'...}
. Запрос отлично работает, когда передается жестко закодированное значение, поэтому никаких проблем в самом запросе нет.
Пожалуйста, помогите мне понять причину проблемы или предложить альтернативы. Я просмотрел несколько ссылок, чтобы выяснить, как передавать переменные в запросе, но ни одна из них не работает.