我正在尝试使用Uplink包装 BitBucket API。当我尝试使用 rest/api/1.0/projects
获取服务器中的所有项目时,它会返回一个项目列表以及需要在参数中设置的“nextPageStart”才能获取下一组结果。我查看文档试图找到解决此问题的方法,发现 params 是“为 API 调用添加静态查询参数的装饰器”。我正在尝试找到一种动态传递参数的方法。
from uplink import Consumer, get, params
import json
class BitBucket(Consumer):
"""A Python client for the BitBucket API"""
@params({"start": 0})
@get("rest/api/1.0/projects")
def get_projects(self):
"""Get the public projects"""
if __name__ == "__main__":
bit_bucket = ButBucket(base_url="<my base url>")
projects = bit_bucket.get_projects()
print(projects.json())
通过提供正确的基本 URL,我可以使用上述代码获取第一页结果。我现在需要修改 @params({"start": 0})
或以其他方式设置请求参数。如何动态将从响应中获得的 nextPageStart
发送到下一个请求?
最佳答案
使用uplink.Query
作为动态参数
from uplink import Consumer, get, params, Query
import json
class BitBucket(Consumer):
"""A Python client for the BitBucket API"""
@get("rest/api/1.0/projects")
def get_projects(self, start: Query('start')):
"""Get the public projects"""
if __name__ == "__main__":
bit_bucket = ButBucket(base_url="<my base url>")
projects = bit_bucket.get_projects()
print(projects.json())
关于python - 需要将动态参数与 Uplink 一起使用来扭曲返回分页结果的 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54426298/