【问题标题】:graphQL in python post request to get datapython post请求中的graphQL获取数据
【发布时间】: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 格式?我如何格式化以便发布请求可以识别它。谢谢!

【问题讨论】:

标签: python curl post request graphql


【解决方案1】:

成功了

   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)

【讨论】:

  • 哇!感谢您提供此解决方案,它确实帮助我传递了动态值。
猜你喜欢
  • 1970-01-01
  • 2020-08-15
  • 1970-01-01
  • 2019-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-27
  • 1970-01-01
相关资源
最近更新 更多