我试图使用request
从api端点获取数据,但是我得到了一个错误的密钥。在我的例子中,我提供了api键和端点url,所以我使用request
获取数据的json
内容,然后使用pandas
创建数据框架。我查看了SO
,但没有发现如何克服这一问题。有没有人有可能的想法或尝试来解决这个问题?如何从api端点正确地获取数据?有什么想法吗?
我的尝试
我试图从这个站点获取数据:市场数据
import requests
import pandas as pd
api_key = 'ec95a478-e46e-47f9-b57d-3d19012d527d'
url = 'https://apps.fas.usda.gov/OpenData/api/esr/countries'
headers = {'Ocp-Apim-Subscription-Key': '{key}'.format(key=api_key)}
jsonData = requests.get(url, headers=headers).json()
df = pd.read_json(json.dumps(jsonData)
但在运行上述代码后,我得到了这个错误:
“不良API密钥”
我访问了这个api并得到了如下说明:
你好,您的自定义API键是********---****-3d19012d527d显示--请将您的API密钥复制并粘贴到下面Swagger窗口的api_key文本框中,并开始探索该API。当您从应用程序发出API请求时,请在Header中使用您的自定义密钥作为名称值对API_KEY:Value。
我的上述尝试有什么错误?如何从本站上的任何API端点正确地获取数据?有人能建议使用json
、request
和pandas
从api端点获取数据的可能方法吗?有什么想法吗?
发布于 2020-11-25 09:59:26
你用你的请求发送了一个标题。该标头名为Ocp-Apim-Subscription-Key
。从你分享的电子邮件中判断,他们期望标题包含一对名为API_KEY
的邮件。
如果这就是问题所在,下面的问题应该得到解决。
headers = {'API_KEY': '{key}'.format(key=api_key)}
将字符串格式化为字符串变量的值是多余的。可以通过删除对format()
的调用来清除代码
headers = {'API_KEY': api_key}
有一件事要记住
你在一个公共网站上发布了你的API密钥。考虑到API密钥用于身份验证,最好的做法是取消对当前密钥的身份验证并请求一个新密钥,以防止未经授权的使用。
https://stackoverflow.com/questions/65010190
复制