Uvod u Spring Data REST

1. Pregled

Ovaj će članak objasniti osnove Spring Data REST-a i pokazati kako ga koristiti za izgradnju jednostavnog REST API-ja.

Općenito, Spring Data REST izgrađen je povrh projekta Spring Data i olakšava izgradnju REST web usluga koje se povezuju s spremištima Spring Data - a sve koriste HAL kao pokretački tip hipermedije.

Oduzima puno ručnog rada koji je obično povezan s takvim zadacima i čini implementaciju osnovne CRUD funkcionalnosti za web aplikacije prilično jednostavnom.

2. Ovisnosti Mavena

Za našu jednostavnu aplikaciju potrebne su sljedeće Mavenove ovisnosti:

 org.springframework.boot opruga-boot-starter org.springframework.boot

Odlučili smo koristiti Spring Boot za ovaj primjer, ali klasični Spring također će dobro funkcionirati. Također smo odlučili koristiti ugrađenu bazu podataka H2 kako bismo izbjegli bilo kakvo dodatno postavljanje, ali primjer se može primijeniti na bilo koju bazu podataka.

3. Pisanje zahtjeva

Započet ćemo s pisanjem objekta domene koji predstavlja korisnika našeg web mjesta:

@Entity javna klasa WebsiteUser {@Id @GeneratedValue (strategy = GenerationType.AUTO) private long id; privatni naziv niza; privatni String e-mail; // standardni geteri i postavljači}

Svaki korisnik ima ime i e-poštu, kao i automatski generirani ID. Sada možemo napisati jednostavno spremište:

@RepositoryRestResource (collectionResourceRel = "users", path = "users") javno sučelje UserRepository proširuje PagingAndSortingRepository {List findByName (@Param ("name") Naziv niza); }

Ovo je sučelje koje omogućuje izvršavanje raznih operacija s Korisnik web stranice predmeta. Također smo definirali prilagođeni upit koji će pružiti popis korisnika na temelju određenog imena.

The @RepositoryRestResource napomena je neobavezna i koristi se za prilagodbu REST krajnje točke. Ako bismo to odlučili izostaviti, Spring bi automatski stvorio krajnju točku na "/ web stranicaKorisnici" umjesto "/ korisnici“.

Na kraju ćemo napisati standard Glavna klasa Spring Boot za inicijalizaciju aplikacije:

@SpringBootApplication javna klasa SpringDataRestApplication {public static void main (String [] args) {SpringApplication.run (SpringDataRestApplication.class, args); }}

To je to! Sada imamo potpuno funkcionalan REST API. Pogledajmo to na djelu.

4. Pristup REST API-ju

Ako pokrenemo aplikaciju i u pregledniku otvorimo // localhost: 8080 /, dobit ćemo sljedeći JSON:

{"_links": {"users": {"href": "// localhost: 8080 / users {? page, size, sort}", "templated": true}, "profile": {"href": " // localhost: 8080 / profil "}}}

Kao što vidite, postoji "/ korisnici"Dostupna krajnja točka, a već ima"?stranica“, “?veličina"I"?vrsta”Opcije.

Tu je i standard “/profil”Krajnja točka, koja pruža metapodatke aplikacije. Važno je napomenuti da je odgovor strukturiran na način koji slijedi ograničenja stila arhitekture REST. Točnije, pruža jednolično sučelje i samoopisne poruke. To znači da svaka poruka sadrži dovoljno informacija da opiše način obrade poruke.

U našoj aplikaciji još nema korisnika, pa bi se na // localhost: 8080 / users samo prikazao prazan popis korisnika. Upotrijebimo curl za dodavanje korisnika.

$ curl -i -X ​​POST -H "Content-Type: application / json" -d '{"name": "Test", \ "email": "[email protected]"}' // localhost: 8080 / users {"name": "test", "email": "[email protected]", "_links": {"self": {"href": "// localhost: 8080 / users / 1"}, "websiteUser" : {"href": "// localhost: 8080 / users / 1"}}}

Pogledajmo i zaglavlja odgovora:

HTTP / 1.1 201 Stvoreni poslužitelj: Apache-Coyote / 1.1 Mjesto: // localhost: 8080 / users / 1 Content-Type: application / hal + json; charset = UTF-8 Transfer-Encoding: chunked

Primijetit ćete da je vraćena vrsta sadržaja "aplikacija / hal + json“. HAL je jednostavan format koji daje dosljedan i jednostavan način hiperveze između resursa u vašem API-ju. Zaglavlje također automatski sadrži Mjesto zaglavlje, a to je adresa koju možemo koristiti za pristup novostvorenom korisniku.

Ovom korisniku sada možemo pristupiti na // localhost: 8080 / users / 1

{"name": "test", "email": "[email protected]", "_links": {"self": {"href": "// localhost: 8080 / users / 1"}, "websiteUser" : {"href": "// localhost: 8080 / users / 1"}}}

Također možete koristiti curl ili bilo koji drugi REST klijent za izdavanje zahtjeva PUT, PATCH i DELETE. Također je važno napomenuti da Spring Data REST automatski slijedi principe HATEOAS-a. HATEOAS je jedno od ograničenja REST arhitektonskog stila, što znači da bi se hipertekst trebao koristiti za pronalaženje puta kroz API.

Na kraju, pokušajmo pristupiti prilagođenom upitu koji smo napisali ranije i pronađimo sve korisnike s imenom "test". To se postiže odlaskom na // localhost: 8080 / users / search / findByName? Name = test

{"_embedded": {"users": [{"name": "test", "email": "[email protected]", "_links": {"self": {"href": "// localhost: 8080 / users / 1 "}," websiteUser ": {" href ":" // localhost: 8080 / users / 1 "}}}}}," _links ": {" self ": {" href ":" / / localhost: 8080 / users / search / findByName? name = test "}}}

5. Zaključak

Ovaj je vodič pokazao osnove stvaranja jednostavnog REST API-ja s Spring Data REST-om. Primjer korišten u ovom članku može se naći u povezanom projektu GitHub.


$config[zx-auto] not found$config[zx-overlay] not found