我无法理解在何处添加API文档定义的参数。以BeeBole的documentation为例,它指定要通过ID缺席,需要以下请求:
{
"service": "absence.get",
"id": "absence_id"
}
它们在文档中仅提供一个URL:
BeeBole正在接受json-doc格式的HTTP POST请求到以下URL: https://beebole-apps.com/api/v2
这将如何在Python请求的上下文中实现?我尝试过的以下代码返回404:
import requests
payload = {
"service": "absence.get",
"id": "absence_id"
}
auth = {
"username": "API_token",
"password": "x"
}
url = "https://beebole-apps.com/api/v2"
req = requests.get(url, params=payload, auth=auth).json()
答案 0 :(得分:1)
BeeBole正在接受json-doc格式的HTTP POST请求到以下URL:https://beebole-apps.com/api/v2
这里缺少JSON文档格式;您需要将信息作为JSON编码的请求的 body 进行传递。您使用的params
参数仅设置URL查询字符串(URL中的?...
部分)。
使用
import requests
payload = {
"service": "absence.get",
"id": "absence_id"
}
auth = ("API_token", "x")
url = "https://beebole-apps.com/api/v2"
req = requests.get(url, json=payload, auth=auth).json()
json=
部分确保payload
字典被编码为JSON并作为POST正文发送。这还将设置请求的Content-Type
标头。
我还更新了API authentication,这里auth
关键字所需要的只是用户名和密码的元组。参见Basic Authentication section。
您可能要等待响应中的调用.json()
;首先检查响应是否成功:
req = requests.get(url, json=payload, auth=auth)
if not req.ok:
print('Request not OK, status:', req.status_code, req.reason)
if req.content:
print(req.text)
else:
data = req.json()
if data['status'] == 'error':
print('Request error:', data['message'])
答案 1 :(得分:0)
从站点文档看来,该特定供应商选择了一种不同寻常的API。大多数人使用不同的终结点来实现不同的操作,但是BeeBole似乎实现了一个终结点之外的所有功能,然后通过检查请求数据中的"service"
键来选择操作。
尝试
response - request.post('https://beebole-apps.com/api/v2',
json={"service": "company.list"},
headers={"authorization": TOKEN)
从文档中,我不能保证将请求以正确的格式放置,但是至少如果它不起作用,它应该为您提供一些有关如何进行处理的线索。 BeeBole文档中的“授权”下介绍了建立正确的TOKEN
值。
这是提供API的一种不寻常的方式,但似乎可行。