Sivutus ja lajittelu
Lisätkää API-päätepisteisiinne sivutus- ja lajitteluominaisuudet tehokasta tietojen hakua varten.
Sivutus ja lajittelu on ilmainen Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppitunti CoddyKitissä. Tämä on oppitunti 2/3. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-kurssilla on yhteensä 3 oppituntia.
Suurten API-vastausten käsittely
Kuvitelkaa API, joka palauttaa tuhansia tietokantatietueita. Kaikkien tietojen hakeminen kerralla on tehotonta ja voi kuormittaa sekä palvelinta että asiakasta liikaa.
- Hidas suorituskyky: Suurten tietomäärien siirtäminen ja käsittely kestää kauemmin.
- Suuri resurssien kulutus: Sekä asiakas että palvelin käyttävät enemmän muistia ja suorittimen aikaa.
- Heikko käyttökokemus: Käyttäjät saattavat joutua odottamaan pitkään tai nähdä sovelluksen jumiutuvan.
Tässä sivutus on hyödyllinen ratkaisu!
Mitä sivutus tarkoittaa?
Sivutus on tekniikka, jossa suuri tulosjoukko jaetaan pienempiin, hallittaviin osiin eli sivuihin. Kaikkien tulosten hakemisen sijaan pyydätte yhden sivun kerrallaan.
- Sivunumero: Haluttu sivu (esimerkiksi sivu 1 tai sivu 2).
- Sivukoko: Kuinka monta kohdetta kullakin sivulla näytetään (esimerkiksi 10 kohdetta sivua kohden).
Tämä parantaa merkittävästi APIn suorituskykyä ja käyttökokemusta vähentämällä siirrettävän tiedon määrää.
Spring Datan Pageable
Spring Data JPA tarjoaa kätevän Pageable-rajapinnan sivutuksen ja lajittelupyyntöjen käsittelyyn. Kun lisäätte Pageable-parametrin ohjaimen metodille, Spring poimii sivutukseen (ja lajitteluun) liittyvät tiedot automaattisesti pyynnön parametreista.
Springin yleisesti käyttämät kyselyparametrit ovat page (alkaen indeksistä 0) ja size.
Sivutuksen toteuttaminen
Luodaan yksinkertainen Spring Boot -REST-päätepiste, joka palauttaa sivutetun luettelon kohteista. Käytämme @PageableDefault-annotaatiota oletussivu- ja oletuskokosarvojen määrittämiseen.
Käynnistäkää sovellus ja avatkaa selaimessa osoite http://localhost:8080/api/items?page=0&size=3.
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.ArrayList;
@SpringBootApplication
@RestController
public class PagingController {
private List<String> items = List.of("Apple", "Banana", "Orange", "Grape", "Kiwi", "Mango", "Peach", "Plum", "Cherry", "Lemon", "Fig", "Date");
@GetMapping("/api/items")
public Page<String> getItems(
@PageableDefault(size = 3, page = 0) Pageable pageable) {
int start = (int) pageable.getOffset();
int end = Math.min((start + pageable.getPageSize()), items.size());
List<String> pagedItems = items.subList(start, end);
return new PageImpl<>(pagedItems, pageable, items.size());
}
public static void main(String[] args) {
SpringApplication.run(PagingController.class, args);
}
}Sivutettujen vastausten tarkastelu
Kun kutsutte edellisen osion APIa, kokeilkaa seuraavia URL-osoitteita:
http://localhost:8080/api/items(käyttää oletuksia: sivu 0, koko 3)http://localhost:8080/api/items?page=0&size=5(ensimmäinen sivu, 5 kohdetta)http://localhost:8080/api/items?page=1&size=3(toinen sivu, 3 kohdetta)
Huomatkaa, että vastaus sisältää sisällön lisäksi myös metatietoja, kuten totalPages-, totalElements- ja number-arvot (nykyisen sivun numero).
Miksi lajittelu on tärkeää
Tietojen rajaamisen ohella yhtä tärkeää on esittää tiedot mielekkäässä järjestyksessä. Käyttäjät haluavat usein lajitella tiedot nimen, päivämäärän, hinnan tai jonkin muun määritteen perusteella.
Tuoteluettelo voidaan esimerkiksi lajitella aakkosjärjestykseen, hinnan mukaan (halvimmasta kalleimpaan) tai luontipäivän mukaan (uusin ensin). APIen tulisi tarjota tämä joustavuus.
Lajittelu Pageable-rajapinnan avulla
Hyvä uutinen on, että Spring Datan Pageable käsittelee myös lajittelun! Voitte määrittää lajitteluperusteet suoraan API-pyynnössä.
- Kentän nimi: Ominaisuus, jonka perusteella lajitellaan (esimerkiksi
nametaiprice). - Suunta: Lajitellaanko nousevaan (
asc) vai laskevaan (desc) järjestykseen.
Lajittelun vakiokyselyparametri on sort=fieldName,direction.
Lajittelun toteuttaminen
Laajennetaan kohteiden APIa niin, että se tukee lajittelua. Lisätään @PageableDefault-annotaatioon oletuslajittelujärjestys.
Käynnistäkää sovellus ja avatkaa selaimessa osoite http://localhost:8080/api/items/sorted?page=0&size=3&sort=item,asc.
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.web.PageableDefault;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.ArrayList;
import java.util.Comparator;
@SpringBootApplication
@RestController
public class SortingController {
private List<String> items = new ArrayList<>(List.of("Apple", "Banana", "Orange", "Grape", "Kiwi", "Mango", "Peach", "Plum", "Cherry", "Lemon", "Fig", "Date"));
@GetMapping("/api/items/sorted")
public Page<String> getSortedItems(
@PageableDefault(size = 3, page = 0, sort = "item", direction = Sort.Direction.ASC) Pageable pageable) {
Comparator<String> comparator = Comparator.naturalOrder();
if (pageable.getSort().isSorted() && pageable.getSort().getOrderFor("item") != null) {
Sort.Direction direction = pageable.getSort().getOrderFor("item").getDirection();
if (direction == Sort.Direction.DESC) {
comparator = Comparator.reverseOrder();
}
}
items.sort(comparator);
int start = (int) pageable.getOffset();
int end = Math.min((start + pageable.getPageSize()), items.size());
List<String> pagedAndSortedItems = items.subList(start, end);
return new PageImpl<>(pagedAndSortedItems, pageable, items.size());
}
public static void main(String[] args) {
SpringApplication.run(SortingController.class, args);
}
}Lajittelun ja sivutuksen yhdistäminen
Voitte yhdistää sivutuksen ja lajittelun samaan pyyntöön! Pageable-objekti käsittelee molemmat saumattomasti.
Kokeilkaa käynnissä olevalla sovelluksella seuraavia URL-osoitteita:
http://localhost:8080/api/items/sorted?page=0&size=4&sort=item,desc(ensimmäinen sivu, 4 kohdetta, laskeva järjestys)http://localhost:8080/api/items/sorted?page=1&size=2&sort=item,asc(toinen sivu, 2 kohdetta, nouseva järjestys)
Tämän joustavuuden ansiosta asiakkaat voivat noutaa juuri tarvitsemansa tiedot haluamallaan tavalla.
Pikatarkistus: API-parametrit
Olette rakentamassa APIa, joka luettelee tuotteita. Haluatte hakea kolmannen sivun, jolla on 10 tuotetta sivua kohden, ja lajitella tuotteet hinnan mukaan laskevaan järjestykseen. Millä seuraavista kyselyparametreista tämä onnistuu?
Kertaus: sivutus ja lajittelu
Olemme oppineet toteuttamaan sivutuksen ja lajittelun Spring Boot -REST-APeissa, mikä tekee niistä tehokkaampia ja käyttäjäystävällisempiä.
- Sivutus: Käyttäkää parametreja
page(alkaen indeksistä 0) jasizetietojen hakemiseen osissa. - Lajittelu: Käyttäkää tulosten järjestämiseen muotoa
sort=fieldName,direction(esimerkiksiasctaidesc). - Spring Datan
Pageable: Tehokas rajapinta, joka käsittelee nämä parametrit automaattisesti, kun ne lisätään ohjaimen metodeihin.
Nämä tekniikat ovat olennaisia kehitettäessä vankkoja API-rajapintoja, jotka käsittelevät suuria tietomääriä hallitusti.
Opi Java tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 24
- Oppitunnit
- 93
Usein kysytyt kysymykset
Onko oppitunti ”Sivutus ja lajittelu” ilmainen?
Kyllä – oppitunnin ”Sivutus ja lajittelu” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-kurssin, päivitä CoddyKit PROhon. Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-kurssilla on yhteensä 3 oppituntia.
Mitä opin oppitunnilla ”Sivutus ja lajittelu”?
Lisätkää API-päätepisteisiinne sivutus- ja lajitteluominaisuudet tehokasta tietojen hakua varten. Harjoittelet Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/3.
Kuinka kauan ”Sivutus ja lajittelu”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppitunnilla?
Kyllä. Jokainen Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Pyyntöjen ja vastausten validointi
- Sivutus ja lajittelu
- HATEOAS-periaatteet RESTille