如何在 PowerQuery 中使用带有标题和正文的 Web.Contents?

问题描述 投票:0回答:1

我需要从 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存储在变量中,然后在第二个请求中使用它,但找不到一种方法来首先发送正文(有效负载)。

json python-requests dax powerquery
1个回答
0
投票

您可以使用以下代码将标头传递给电源查询中的请求

= 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,然后在那里调用它

此外,如果标题键包含连字符,我们在标题键上使用 #"..."

© www.soinside.com 2019 - 2024. All rights reserved.