【发布时间】:2019-09-05 19:35:31
【问题描述】:
您好,我试图弄清楚如何正确地将 graphQL 查询传递给 python 发布请求。
commission junction API 网站上的示例 graphQL 像这样卷曲:
curl -H "Authorization: Bearer <your-personal-access-token> -XPOST
https://commissions.api.cj.com/query -d '{ publisherCommissions(forPublishers: ["999"], sincePostingDate:"2018-08-08T00:00:00Z",beforePostingDate:"2018-08-09T00:00:00Z"){count payloadComplete records {actionTrackerName websiteName advertiserName postingDate pubCommissionAmountUsd items { quantity perItemSaleAmountPubCurrency totalCommissionPubCurrency } } } }'
我尝试使用python来模拟请求:
import requests
headers = {"Authorization": "Bear token"}
def run_query(query):
request = requests.post('https://commissions.api.cj.com/query', 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))
query="""
{
publisherCommissions(forPublishers: ["999"]) {
records
}
}
"""
result = run_query(query)
但总是得到响应 400。不知道 python 是否可以采用 graphQL 格式?我如何格式化以便发布请求可以识别它。谢谢!
【问题讨论】:
-
不应该
payload是一个字符串吗? -
graphql.org/learn/serving-over-http/#post-request 记录请求格式;使用
requests发送它应该非常简单。 -
它并不能帮助我解决问题,我确实将格式更改为“查询”:查询,仍然得到 400
-
也许这会有所帮助 - stackoverflow.com/questions/43675933/… ,您是否尝试过在标题中设置内容类型?
标签: python curl post request graphql