我正在尝试从使用分页的端点获取所有记录:
来自文档:
除非另有说明,索引操作限制为每个请求 200 个资源。可以提供限制参数以减少请求返回的结果数量,并且可以提供偏移参数以跳过记录。分页的元数据在索引动作中返回,例如:
{
data: { ... },
meta: { paging: { previous: '', next: '' } },
}
上一个和下一个字段将分别是可用于检索上一页和下一页数据的 URL。如果没有上一页或下一页,则该字段将被省略。
所以我正在尝试:
from datetime import date, datetime, time, timedelta
import requests
import json
class Clio:
API_BASE_URL = "eu.app.clio.com"
CLIENT_ID = "aUX1h...MidAv"
CLIENT_SECRET = "jGZZ...n49Ss"
def __init__(self):
self.session = requests.Session()
self.auth()
def refresh_token(self):
# ...
pass
def get_matters(self):
url = f"https://{Clio.API_BASE_URL}/api/v4/matters/"
matters = self.fetch_data(url)
yield matters
while matters['meta']['paging']['next']:
url = matters['meta']['paging']['next']
matters = self.fetch_data(url)
yield matters
for matter in matters:
print(matter['id'])
return matters
def fetch_data(self, url):
response = self.session.get(url)
return response.json()
def auth(self):
self.access_token = open("token.json", "r")
self.access_token = json.load(self.access_token)
if self.access_token.get("expires_at") < datetime.now().timestamp(): self.refresh_token()
self.session.headers = {'Authorization': 'Bearer ' + self.access_token.get("access_token")}
目标是调整方法 get_matters()
和 fetch_data()
以在我从另一个文件 example.py 调用它时返回所有事项:
from clio import Clio
clio = Clio()
matters = clio.get_matters()
# ...
我的班级 Clio 有什么问题?
答案 0 :(得分:0)
正如@alani 和@MichaelButscher 提到的,删除 return matters
方法中的 get_matters
。
调用代码需要消耗生成器中的所有项目:
matters = list(clio.get_matters())