Привет, я пытался понять, как правильно передать запрос graphQL почтовому запросу python.
Образец graphQL находится на веб-сайте API комиссионного соединения, как показано ниже:
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? как мне отформатировать, чтобы почтовый запрос мог его распознать. Спасибо!
requests.
это не помогает мне решить проблему, я изменил формат на «запрос»: запрос, все еще есть 400
Может быть, это может помочь - stackoverflow.com/questions/43675933/…, вы пробовали устанавливать тип контента в заголовках?






Это сработало
query = """
{
advertiserCommissions(forAdvertisers: "inputID",sinceEventDate: "%s",
beforeEventDate: "%s") {
records {
commissionId
orderDiscountPubCurrency
aid
orderId
postingDate
lockingDate
actionStatus
advertiserId
advertiserName
saleAmountUsd
originalActionId
pubCommissionAmountUsd
cjFeeUsd
actionTrackerId
actionType
eventDate
original
actionTrackerName
}
limit
maxCommissionId
payloadComplete
count
}
}
""" % (beginDate, endDate)
Ух ты! Спасибо за это решение, оно действительно помогло мне передать динамические значения.
Разве
payloadне должно быть строкой?