Usage¶
To use REST Header Pagination in a project, choose your preferred pagination
style (see below). Each time you will have envelope
param available.
If you set it to true (or 1), you’ll get original behavior of respective
DRF’s class but the Headers will also be set.
HeaderPageNumberPagination¶
- Request::
- GET https://api.example.com/accounts/?page=2
Response:
HTTP 200 OK
Headers:
Link: <https://api.example.com/accounts/>; rel="first", <https://api.example.com/accounts/?page=1>; rel="prev", <https://api.example.com/accounts/?page=3>; rel="next", <https://api.example.com/accounts/?page=9>; rel="last"
Body:
[
{
"id": 1,
"name": "John Doe",
},
...
]
- Request::
- GET https://api.example.com/accounts/?page=2&envelope=true
Response:
HTTP 200 OK
Headers:
Link: <https://api.example.com/accounts/?envelope=true>; rel="first", <https://api.example.com/accounts/?page=1>; rel="prev", <https://api.example.com/accounts/?page=3>; rel="next", <https://api.example.com/accounts/?page=9>; rel="last"
Body:
{
"count": 882,
"first": "https://api.example.com/accounts/?envelope=true",
"previous": "https://api.example.com/accounts/?page=1&envelope=true",
"next": "https://api.example.com/accounts/?page=3&envelope=true",
"last": "https://api.example.com/accounts/?page=9&envelope=true",
"results": [
{
"id": 1,
"name": "John Doe",
},
...
]
}
Setup¶
To enable the LimitOffsetPagination style globally, use the following configuration:
REST_FRAMEWORK = {
...
'DEFAULT_PAGINATION_CLASS': 'hedju.HeaderPageNumberPagination',
'PAGE_SIZE': 100,
}
HeaderLimitOffsetPagination¶
- Request::
- GET https://api.example.com/accounts/?limit=100&offset400
Response:
HTTP 200 OK
Headers:
Link: <https://api.example.com/accounts/?limit=100>; rel="first", <https://api.example.com/accounts/?limit=100&offset=300>; rel="prev", <https://api.example.com/accounts/?limit=100&offset=500>; rel="next", <https://api.example.com/accounts/?limit=100&offset=782>; rel="last"
Body:
[
{
"id": 1,
"name": "John Doe",
},
...
]
Response:
HTTP 200 OK
Headers:
Link: <https://api.example.com/accounts/?limit=100&envelope=true>; rel="first", <https://api.example.com/accounts/?limit=100&offset=300&envelope=true>; rel="previous", <https://api.example.com/accounts/?limit=100&offset=500&envelope=true>; rel="next", <https://api.example.com/accounts/?limit=100&offset=782&envelope=true>; rel="last"
Body:
{
"count": 882,
"first": "https://api.example.com/accounts/?limit=100&envelope=true",
"previous": "https://api.example.com/accounts/?limit=100&offset=300&envelope=true",
"next": "https://api.example.com/accounts/?limit=100&offset=500&envelope=true",
"last": "https://api.example.com/accounts/?limit=100&offset=782&envelope=true",
"results": [
{
"id": 1,
"name": "John Doe",
},
...
]
}
Setup¶
To enable the LimitOffsetPagination style globally, use the following configuration:
REST_FRAMEWORK = {
...
'DEFAULT_PAGINATION_CLASS': 'hedju.HeaderLimitOffsetPagination',
'PAGE_SIZE': 100, # Optional
}