Z nagłówkami za pan brat — X-Total-Count

Bartek Drzazgowski
Jul 26, 2017 · 1 min read

Pierwszy z serii postów na temat przydatnych nagłówków HTTP. Dziś na warsztat biorę X-Total-Count, który przyda się nam przy obsłudze paginacji w REST’owych usługach.

W celu poprawnej obsługi paginacji potrzebujemy określić przynajmniej 3 elementy: numer aktualnej strony, liczba pozycji na stronę oraz liczba wszystkich dostępnych elementów. W większości przypadków w grę wchodzić będą jeszcze dodatkowe filtry na dane, jednak pominę je tutaj, dla ułatwienia przykładu.

Nad pierwszymi dwoma elementami (numer i wielkość strony) nie ma sensu się rozwodzić, każdy może określić je wedle własnego uznania. Uzyskanie ostatniego z tercetu, wymagać będzie odwołania się do zasobów serwera. Nic nie stoi na przeszkodzie, aby przy okazji żądania pobierającego dane, serwer zwrócił nam aktualną liczbę wszystkich elementów. Zaletą tego rozwiązania jest zwolnienie z konieczności drugiego odpytania serwera i każdorazowo aktualna liczba danych.

Dobrą praktyką w tym wypadku jest wykorzystanie, wspomnianego już, nagłówka X-Total-Count. Prosty przykład jak można go zaimplementować:

Metoda pobierająca dane przyjmuje query parametry w celu zwrócenia poprawnej strony. Adnotacja @DefaultValue umożliwia przypisanie domyślnej wartości do parametrów metody REST’owej. Klasa PageRequest pomaga przy określaniu offsetu dla pobieranych danych.

Prosty projekt, oparty na Dropwizard, z użyciem powyższego kodu można znaleźć na moim GitHubie.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade