| Termin | Definicja |
|---|---|
| brak paginacji odpowiedzi | Brak paginacji odpowiedzi to usterka API zwracającego wszystkie wyniki jednocześnie, bez możliwości podziału na strony. Na czym polega brak paginacji odpowiedzi APIBrak paginacji odpowiedzi oznacza, że interfejs programistyczny API zwraca cały zbiór wyników w jednym komunikacie, zamiast dzielić go na mniejsze części. Jeżeli zapytanie dotyczy listy produktów, wiadomości, plików, rekordów klientów albo wyników wyszukiwania, serwer może próbować umieścić wszystkie pasujące elementy w jednej odpowiedzi HTTP. Klient otrzymuje wtedy pojedynczy dokument, najczęściej zapisany w formacie JSON, bez parametrów określających numer strony, rozmiar strony lub pozycję rozpoczęcia odczytu. Paginacja jest mechanizmem ograniczającym wielkość pojedynczego wyniku. W zależności od projektu API może wykorzystywać parametry takie jak Skutki dużej odpowiedzi po stronie serwera i klientaJednorazowe pobieranie całego zbioru zwiększa zużycie zasobów po stronie serwera. Serwer musi odczytać większą liczbę rekordów, utworzyć kompletną strukturę odpowiedzi, zserializować ją do JSON lub innego formatu i przesłać przez sieć. Jeżeli dane pochodzą z relacyjnej bazy danych, zapytanie może wymagać sortowania, filtrowania i zbudowania dużego zbioru wynikowego przed wysłaniem pierwszych bajtów odpowiedzi. W efekcie rośnie czas odpowiedzi oraz obciążenie procesora, pamięci operacyjnej i połączeń z bazą danych. Po stronie klienta duży komunikat musi zostać odebrany, przechowany i przetworzony. Aplikacja może chwilowo wykorzystać dużo pamięci, zwłaszcza gdy parser JSON tworzy obiekty reprezentujące wszystkie elementy jednocześnie. Na urządzeniu o ograniczonych zasobach może to prowadzić do spowolnienia interfejsu, błędu braku pamięci albo przerwania żądania. Długi transfer zwiększa również ryzyko przekroczenia limitu czasu, zerwania połączenia mobilnego lub odrzucenia odpowiedzi przez warstwę pośrednią, taką jak brama API, serwer proxy albo moduł równoważenia ruchu. Brak paginacji może także powodować nieprzewidywalne zachowanie podczas kolejnych odczytów. Gdy dane zmieniają się w trakcie pobierania, klient nie ma wyraźnego mechanizmu określenia, które rekordy zostały już pokazane, a które pojawiły się później. Samo ponowienie pełnego żądania może pobrać ponownie te same elementy, a wynik może mieć inną kolejność. Problem jest szczególnie widoczny w aplikacjach wyświetlających listy, synchronizujących dane lub wykonujących okresowe odświeżanie. Rozpoznawanie problemu w działaniu interfejsuObjawem braku paginacji jest odpowiedź zawierająca bardzo dużą tablicę elementów mimo zapytania dotyczącego zwykłej listy. W dokumentacji API może brakować parametrów strony, limitu lub kursora, a odpowiedź może nie zawierać informacji typu Weryfikacja powinna obejmować rzeczywisty komunikat HTTP, jego rozmiar, czas odpowiedzi i liczbę elementów w tablicy. Należy sprawdzić, czy zmiana parametrów zapytania wpływa na liczbę wyników, czy serwer zwraca kod błędu po przekroczeniu określonego rozmiaru oraz czy odpowiedź zawiera nagłówki lub pola wskazujące dalszą część zbioru. Przydatne jest porównanie małego i dużego zakresu wyszukiwania, obserwacja zużycia pamięci klienta oraz sprawdzenie logów aplikacji pod kątem przekroczeń limitu czasu, błędów parsowania i przerwanych połączeń. Nie należy mylić braku paginacji z błędem sortowania, filtrowania albo limitowania wyników. Jeżeli serwer zwraca zawsze taką samą liczbę elementów, może stosować stały limit, lecz bez udostępnienia sposobu pobrania pozostałych danych nadal nie zapewnia pełnej nawigacji po zbiorze. Jeżeli natomiast lista jest krótka, a odpowiedź ma niewielki rozmiar, brak formalnego podziału na strony może być świadomą decyzją projektową, a nie usterką wpływającą na działanie programu. Projektowanie i usuwanie problemu w aplikacjiUsunięcie problemu wymaga ustalenia kontraktu API między serwerem i klientem. Serwer powinien przyjmować jawny parametr ograniczający liczbę rekordów oraz parametr wskazujący fragment zbioru, a odpowiedź powinna informować o możliwości pobrania kolejnej części. Dla danych zmieniających się często praktyczny jest kursor oparty na stabilnym kluczu sortowania, ponieważ klasyczne Klient powinien pobierać dane etapami i przetwarzać tylko aktualnie potrzebny fragment. Interfejs może udostępniać przyciski „następna strona” i „poprzednia strona”, ładowanie kolejnych elementów podczas przewijania albo przycisk pobrania następnego zestawu wyników. Należy obsłużyć pustą stronę, wygasły kursor, zmianę filtrów, ponowienie żądania oraz częściową awarię sieci. W przypadku list używanych do synchronizacji warto zapisywać stabilny punkt kontynuacji i testować zachowanie przy jednoczesnej zmianie danych. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów i komputerów PC, dlatego podczas diagnostyki oprogramowania można sprawdzić także lokalne objawy przeciążenia, błędy aplikacji klienckiej oraz problemy z komunikacją sieciową. |