我是python的新手,希望通过Google Cloud Functions从API获取数据,以便以后可以将数据存储在Google Cloud Storage中。
数据以JSON格式提供,我想通过panda在表中转换它。
由于我真的不确定正确的语法,我想知道如何调用函数test_topic-下面的代码对我不起作用。我没有收到错误消息,但也没有得到结果。
我该怎么办才能拿到桌子?
import requests
import pandas as pd
def test_topic(df):
url = "https://api.domain.com/v1/"
payload={}
headers = {}
parameters = {
"api_key": "1234567890",
"start_date": "2020-01",
"end_date": "2021-01",
"format": "json"
}
response = requests.request("GET", url, headers=headers, data=payload, params=parameters)
df = response.json()['visits']
pd.DataFrame(df)
您的第一个问题是,您可能需要根据云功能验证您的请求。除非部署了云功能--allow-unauthenticated
(允许任何人使用(,否则您必须使用访问(?(令牌(TOKEN
(对请求进行身份验证:
token = os.getenv("TOKEN")
headers=["Authorization"] = "Bearer: {token}".format(token=token)}
出于开发目的,您可以使用gcloud
获取令牌,并将其导出到您的代码:
export TOKEN=$(gcloud auth print-access-token)
python3 main.py
您还应该:
headers["Accept"] = "application/json"
对于调试,您应该考虑:
json_response = response.json()
print(json_response)
在您尝试访问visits
之前,也许:
if "visits" in json_response:
# JSON response contains "visits"
else:
# JSON response does not contain "visits"