1

Sometimes I want to get from a resource the full response and sometimes I want it with pagination. Until now I was only able to use either the one or the other. But isn't there a way to set flask-restless to use both depending on the paramters i pass on the GET request?

If I want to disable pagination for a specific resource I change the settings like this:

manager.create_api(someresource, methods=['GET'], results_per_page=None)

But now pagination is completly disabled and that's not the behaviour I wish.

And if pagination is enabled as default it returns only the first page. Isn't there a way to tell flask-restless to get only the first page if I specifically pass the page 1 in the query string like so:

GET http://someaddress/resource?page=1 

I was actually able to solve the problem using a loop but I don't think it is a nice solution because I have to use multiple requests.

I requested the resource and fetched the total_pages and then I ran a loop to total_pages and passed each iteration as an argument in the query string for another new request to fetch each page:

i = 1
while i <= response.total_pages:
    page_response = requests.get("http://someurl/someresource?page=" + str(i))
    ...

But I don't think it is a nice way to solve that issue. If there is a possibility to change the settings on flask-restless to fetch only the first page if it is passed as an argument in the query string then I would be more than happy but if there is still another way to use both then it's also good.

mbijou
  • 87
  • 1
  • 2
  • 12

1 Answers1

1

You can get the behaviour you want by disabling pagination with:

manager.create_api(someresource, methods=['GET'], results_per_page=0)

And then query the API with the results_per_page parameter like so:

GET http://someaddress/resource?results_per_page=2

The results_per_page parameter has to be a positive integer and will be your new page size. The parameter is further documented here.


Getting the full response without pagination is straight forward with this configuration. Just omit the results_per_page parameter:

GET http://someaddress/resource
Phonolog
  • 6,321
  • 3
  • 36
  • 64