需要通过Uplink使用动态参数来扭曲返回分页结果的API

时间:2019-01-29 17:12:54

标签: python api

我正在尝试使用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动态发送到下一个请求?

1 个答案:

答案 0 :(得分:0)

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())