从我的 python 代码进行 graphQL 突变,出现错误
Making a graphQL mutation from my python code, getting error
我正在尝试从 python 对我的 Shopify 商店进行修改。
我是 graphQL 的新手,我已经能够使用 graphiQL 进行修改,但我不确定如何直接从我的代码中进行修改。
这是我的 make 查询文件,它已成功用于简单查询
`import requests
def make_query(self, query, url, headers):
"""
Return query response
"""
request = requests.post(url, json={'query': query}, headers=headers)
if request.status_code == 200:
return request.json()
else:
raise Exception("Query failed to run by returning code of {}. {}".format(request.status_code, query))`
现在在 graphiQL 中起作用的突变示例是这样的:
"mutation {customerCreate(input: {email: 'wamblamkazam@send22u.info', password: 'password'}) {userErrors { field message}customer{id}}}"
但是当我将它传递到我的 make_query 函数时它给出了这个错误
{'errors': [{'message': 'Parse error on "\'" (error) at [1, 41]', 'locations': [{'line': 1, 'column': 41}]}]}
我该如何解决这个问题?
我正在做的其中一个突变也使用了变量,但我无法直接从我的代码中找到如何执行此操作的示例
GraphQl 提供了一种在 JSON 中发送数据的方法。您可以在查询中使用变量,并将 JSON 对象作为变量值发送:
def make_query(self, query, variables, url, headers):
"""
Make query response
"""
request = request.post(url, json={'query': query, 'variables': variables}, headers=headers)
if request.status_code == 200:
return request.json()
else:
raise Exception("Query failed to run by returning code of {}. {}".format(request.status_code, query))
查询如下所示:
query = """
mutation CreateCustomer($input:CustomerInput){
customerCreate(customerData: $input){
customer{
name
}
}
}
"""
variables = {'input': customer}
您也可以使用 python-graphql-client 等库
提出同样的要求:
client = GraphQLClient('http://127.0.0.1:5000/graphql')
query = """
mutation CreateCustomer($input:CustomerInput){
customerCreate(customerData: $input){
customer{
name
}
}
}
"""
variables = {'input': customer}
client.execute(query, variables)
我通过浏览器跟踪了变更请求,并准确复制了正在发送的 json,删除了换行符。在我添加的代码中 { "query": json } 并且有效
我使用发送 2 个参数并接收令牌的示例:
mutation = """mutation {
login( username: "myusername", password: "mypassword", )
{
token
}
}"""
res = requests.post(url, json={"query": mutation} )
我正在尝试从 python 对我的 Shopify 商店进行修改。 我是 graphQL 的新手,我已经能够使用 graphiQL 进行修改,但我不确定如何直接从我的代码中进行修改。
这是我的 make 查询文件,它已成功用于简单查询
`import requests
def make_query(self, query, url, headers):
"""
Return query response
"""
request = requests.post(url, json={'query': query}, headers=headers)
if request.status_code == 200:
return request.json()
else:
raise Exception("Query failed to run by returning code of {}. {}".format(request.status_code, query))`
现在在 graphiQL 中起作用的突变示例是这样的:
"mutation {customerCreate(input: {email: 'wamblamkazam@send22u.info', password: 'password'}) {userErrors { field message}customer{id}}}"
但是当我将它传递到我的 make_query 函数时它给出了这个错误
{'errors': [{'message': 'Parse error on "\'" (error) at [1, 41]', 'locations': [{'line': 1, 'column': 41}]}]}
我该如何解决这个问题? 我正在做的其中一个突变也使用了变量,但我无法直接从我的代码中找到如何执行此操作的示例
GraphQl 提供了一种在 JSON 中发送数据的方法。您可以在查询中使用变量,并将 JSON 对象作为变量值发送:
def make_query(self, query, variables, url, headers):
"""
Make query response
"""
request = request.post(url, json={'query': query, 'variables': variables}, headers=headers)
if request.status_code == 200:
return request.json()
else:
raise Exception("Query failed to run by returning code of {}. {}".format(request.status_code, query))
查询如下所示:
query = """
mutation CreateCustomer($input:CustomerInput){
customerCreate(customerData: $input){
customer{
name
}
}
}
"""
variables = {'input': customer}
您也可以使用 python-graphql-client 等库 提出同样的要求:
client = GraphQLClient('http://127.0.0.1:5000/graphql')
query = """
mutation CreateCustomer($input:CustomerInput){
customerCreate(customerData: $input){
customer{
name
}
}
}
"""
variables = {'input': customer}
client.execute(query, variables)
我通过浏览器跟踪了变更请求,并准确复制了正在发送的 json,删除了换行符。在我添加的代码中 { "query": json } 并且有效
我使用发送 2 个参数并接收令牌的示例:
mutation = """mutation {
login( username: "myusername", password: "mypassword", )
{
token
}
}"""
res = requests.post(url, json={"query": mutation} )