기본적인 기능들은 다 구현을 성공했는데 Pagination부분에서 시간이 많이 걸렸다.
Pagination
페이지를 호출해 주는 것인데 밑에와 같이 JSON형식으로 보여준다.
HTTP 200 OK
{
"count": 1023,
"next": "https://api.example.org/accounts/?page=5",
"previous": "https://api.example.org/accounts/?page=3",
"results": [
…
]
}
https://www.django-rest-framework.org/api-guide/pagination/?q=ListAPIView%29#pagenumberpagination
DFR pagination을 보며 문제를 풀어 났지만 도통 뭔 소리 인지 몰라 힘들고 시간이 너무 많이 소비됐다.
공식문서에서는 이렇게해라 라고 정의는 돼 있지만 아직 이것을 어떻게 구현해야 하는 감각이 많이 부족했다.
그래서 두 번째 추천 방법은 Girhub를 참고하는 것
https://github.com/encode/django-rest-framework/blob/master/rest_framework/pagination.py
코드들이 이쁘게 줄지어 있는데 보면 진짜 눈이 돌아가지만 집중해서 내가 원하는 것을 차근차근 찾아본다면 원하는 내용을 얻을 수 있다.
def get(self, request):
products = Product.objects.all()
paginator = PageNumberPagination()
res_pag = paginator.paginate_queryset(products, request)
serializer = ProductSerializer(res_pag, many=True)
return paginator.get_paginated_response(serializer.data)
이런 식으로 겨우겨우 구현에 성을 했다.