Flask-Restful 中的分页 API 响应

时间:2021-02-17 12:30:14

标签: flask sqlalchemy pagination infinite-scroll flask-restful

我正在尝试构建一个 API 端点,该端点将返回分页响应,稍后将用于实现无限滚动功能。 我对回复进行分页是否正确?

到目前为止,我已经编写了以下资源类:

class Restaurants(Resource):

    def get(self):
        
        try:
           page = int(request.args.get('page', 1))
           limit = int(request.args.get('limit', 20))
        except:
            return abort(409, 'Invalid URL arguments')

        paginate = Restaurant.query.paginate(page, limit, False)

        
        obj = {}
        obj ['page'] = page
        obj['limit'] = limit
        next = paginate.next_num
        
        query_string_next = ''
        if next:
            query_string_next = "restaurants?page=%d&limit=%d" % (next,limit)
        obj['next'] = query_string_next
        
        
        query_string_prev = ''
        prev = paginate.prev_num
        if prev:
            query_string_prev = "restaurants?page=%d&limit=%d" % (prev,limit)
        obj['prev'] = query_string_prev
    
        obj['results'] = marshal(paginate.items, resource_fields)
        return obj

这很好用,但我的问题是是否优化得很好?

鉴于查询将在每个页面请求上执行,并且每个用户可能对不同页面的同一端点进行多次 API 调用,是否有更好的技术先缓存所有条目,然后使用缓存结果在构建分页响应?

欢迎提出任何其他建议。

0 个答案:

没有答案
相关问题