我需要从 API 获取数据,但这是一个两步过程。我需要将标题和指标(即天数、游戏标题等)作为正文传递以获取“ReportID”,然后将其存储在变量中以使用它来请求主报告。
所以在Python中,我可以做这样的事情,但无法将其转换为Power Query:
from time import sleep
from requests import request
from datetime import datetime,timedelta
import json
import pandas as pd
token = myapikey
payload = {
"startDate": 1672520400,
"endDate": 1675198800,
"dimensions" : ["day", "gameTitle],
"metrics" : ["revenue"]
}
url = f"https://api.myapi.com/v1/report/supply"
r = request(
method='post',
url=url,
headers=headers,
data=json.dumps(payload)
)
headers = {
"Api-Key":token,
"Content-Type":"application/json"
}
def send_request(payload,token):
r = request(
method='post',
url=url,
headers=headers,
data=json.dumps(payload)
)
return r
resp = send_request(payload=payload,key=token)
report_id = resp.json()['data']['reportId']
def get_report(report_id,key):
url=f"https://api.myapi.com/v1/report/supply?reportId={report_id}&responseType=result"
r = request(
method='get',
url=url,
headers=headers
)
return r.json()['data']['rows']
rows = get_report(report_id=report_id,key=token)
我需要解压第一个响应并将reportID存储在变量中,然后在第二个请求中使用它,但找不到一种方法来首先发送正文(有效负载)。
您可以使用以下代码将标头传递给电源查询中的请求
= Web.Contents(
"https://api.myapi.com/v1/report/supply?reportId=" & REPORT_ID & "&responseType=result",
[
Headers = [
#"Api-Key" = "YOUR_TOKEN",
#"Content-Type" = "application/json"
]
]
)
对于报告 ID,您可以创建一个函数,请参阅此链接,使用与此类似的代码来检索 REPORT_ID,然后在那里调用它
此外,如果标题键包含连字符,我们在标题键上使用 #"..."