python - 从 TWILIO 的 HTTP GET REST API 响应中使用分页消息的最佳 Python 设计模式是什么?
问题描述
尝试实现 source_to_raw 以通过 python 脚本使用 Twilio API 响应。下面是我尝试过的示例代码。我希望应该有比这更好的方法。
我正在探索通过 Python 帮助程序库完成的选项,而没有任何模式选项,因为它仅适用于 raw_zone。我遇到了永无止境的'next_page_uri'的无限循环。Twilio 提供了 pageSize 限制,但无法确定“页面”的结尾,以便为我的代码中的循环和条件语句设计退出条件。有关 Python-AzureDatabricks 堆栈上的 Twilio 分页的任何帮助都会有很大帮助。
以下是示例代码和几个示例响应。
page_data = page_response(url,date,creds)
data.update(page_data)
while(page_data['next_page_uri']!=None):
page_data = page_response(url,date,creds)
data.update(page_data)
next_page_url=data['next_page_uri']
src_url='https://api.twilio.com'
url=src_url+next_page_url
print(url)```
Sample Responses:
#response_0:
{
"first_page_uri":"",
"end":11111,
"previous_page_uri":"/2010-04-01/..../",
"messages":[{raw...data}]
"next_page_uri":""/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages.json?start=2020-12-02PageSize=50&Page=1"
"page":0
}
#response_1:
{
"first_page_uri":"",
"end":49,
"previous_page_uri":"",
"messages":[{raw...data}]
"next_page_uri":""/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages.json?start=2020-12-02PageSize=50&Page=2"
"page":1
}
解决方案
我没有对此进行测试,但是您始终可以像以下代码一样进行一些递归:
def get_twillo_data(url, date, creds, data):
_data = page_response(url, date, creds)
data += _data['messages']
next_page_uri = _data.get('next_page_uri')
if next_page_uri:
get_twillo_data(
url = url + next_page_uri,
date = date,
creds = creds,
data = data
)
else:
return data
data = []
messages = get_twillo_data(
url='https://api.twilio.com',
date='ur_date',
creds='ur_creds',
data = data
)
推荐阅读
- javascript - 为什么 eval() 中的 typeof 会在我的函数中引发错误?
- c# - 在带有 Infragistics 的 Win10 上看不到窗口按钮
- cakephp - 更改 cakephp 中复选框的值
- c# - 如何修复 mvc 中的搜索功能
- c - 是否可以在用户进程之间共享内存而不会像线程一样造成延迟损失
- c++ - 以高分辨率渲染 QChartView
- azure - 在网站中集成 Azure 多重身份验证以对其用户进行身份验证
- c# - 如何使用 TensorFlowSharp 从张量编码 .JPG 文件?
- r - 如果丢失数据的位置未知,如何在 R 中插入缺失数据的行?
- if-statement - 关于 if...else 语句的设计模式