Inleiding tot Spring Data REST

1. Overzicht

Dit artikel legt de basisprincipes van Spring Data REST uit en laat zien hoe je het kunt gebruiken om een ​​eenvoudige REST API te bouwen.

Over het algemeen is Spring Data REST bovenop het Spring Data-project gebouwd en maakt het het gemakkelijk om hypermedia-gestuurde REST-webservices te bouwen die verbinding maken met Spring Data-repositories - allemaal met behulp van HAL als het drijvende hypermedia-type.

Het neemt veel van het handmatige werk weg dat gewoonlijk met dergelijke taken gepaard gaat en maakt het implementeren van basis CRUD-functionaliteit voor webapplicaties vrij eenvoudig.

2. Maven afhankelijkheden

De volgende Maven-afhankelijkheden zijn vereist voor onze eenvoudige applicatie:

 org.springframework.boot spring-boot-starter org.springframework.boot

We hebben besloten om Spring Boot voor dit voorbeeld te gebruiken, maar de klassieke Spring zal ook prima werken. We hebben er ook voor gekozen om de ingesloten H2-database te gebruiken om extra instellingen te vermijden, maar het voorbeeld kan op elke database worden toegepast.

3. Het schrijven van de applicatie

We beginnen met het schrijven van een domeinobject om een ​​gebruiker van onze website te vertegenwoordigen:

@Entity openbare klasse WebsiteUser {@Id @GeneratedValue (strategy = GenerationType.AUTO) lange privé-id; private String naam; privé String-e-mail; // standaard getters en setters}

Elke gebruiker heeft een naam en een e-mailadres, evenals een automatisch gegenereerde ID. Nu kunnen we een eenvoudige repository schrijven:

@RepositoryRestResource (collectionResourceRel = "gebruikers", pad = "gebruikers") openbare interface UserRepository breidt PagingAndSortingRepository {Lijst findByName (@Param ("naam") Stringnaam) uit; }

Dit is een interface waarmee u verschillende bewerkingen kunt uitvoeren met WebsiteGebruiker voorwerpen. We hebben ook een aangepaste query gedefinieerd die een lijst met gebruikers oplevert op basis van een bepaalde naam.

De @RepositoryRestResource annotatie is optioneel en wordt gebruikt om het REST-eindpunt aan te passen. Als we zouden besluiten het weg te laten, maakt Spring automatisch een eindpunt aan op '/ websiteUsers" in plaats van "/ gebruikers“.

Ten slotte zullen we een standaard schrijven Spring Boot-hoofdklasse om de applicatie te initialiseren:

@SpringBootApplication openbare klasse SpringDataRestApplication {openbare statische leegte hoofd (String [] args) {SpringApplication.run (SpringDataRestApplication.class, args); }}

Dat is het! We hebben nu een volledig functionele REST API. Laten we het in actie bekijken.

4. Toegang tot de REST API

Als we de applicatie starten en naar // localhost: 8080 / gaan in een browser, ontvangen we de volgende JSON:

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

Zoals u kunt zien, is er een "/ gebruikers"Eindpunt beschikbaar, en het heeft al de"?bladzijde“, “?grootte"En"?soort”Opties.

Er is ook een standaard “/profiel”Endpoint, dat metagegevens van applicaties levert. Het is belangrijk op te merken dat het antwoord is gestructureerd op een manier die de beperkingen van de REST-architectuurstijl volgt. Het biedt met name een uniforme interface en zelfbeschrijvende berichten. Dit betekent dat elk bericht voldoende informatie bevat om te beschrijven hoe het bericht moet worden verwerkt.

Er zijn nog geen gebruikers in onze applicatie, dus als je naar // localhost: 8080 / users gaat, wordt er gewoon een lege lijst met gebruikers weergegeven. Laten we curl gebruiken om een ​​gebruiker toe te voegen.

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

Laten we ook eens kijken naar de antwoordkoppen:

HTTP / 1.1 201 Aangemaakte server: Apache-Coyote / 1.1 Locatie: // localhost: 8080 / gebruikers / 1 Content-Type: application / hal + json; charset = UTF-8 Transfer-Encoding: chunked

U zult zien dat het geretourneerde inhoudstype 'applicatie / hal + json“. HAL is een eenvoudig formaat dat een consistente en gemakkelijke manier biedt om een ​​hyperlink te maken tussen bronnen in uw API. De koptekst bevat ook automatisch de Plaats header, het adres dat we kunnen gebruiken om toegang te krijgen tot de nieuw aangemaakte gebruiker.

We hebben nu toegang tot deze gebruiker op // localhost: 8080 / users / 1

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

U kunt ook curl of een andere REST-client gebruiken om PUT-, PATCH- en DELETE-verzoeken uit te voeren. Het is ook belangrijk op te merken dat Spring Data REST automatisch de principes van HATEOAS volgt. HATEOAS is een van de beperkingen van de REST-architectuurstijl en het betekent dat hypertekst moet worden gebruikt om uw weg door de API te vinden.

Laten we tot slot proberen toegang te krijgen tot de aangepaste query die we eerder hebben geschreven en alle gebruikers met de naam "test" zoeken. Dit wordt gedaan door naar // localhost: 8080 / users / search / findByName? Name = test te gaan

{"_embedded": {"gebruikers": [{"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. Conclusie

Deze tutorial demonstreerde de basisprincipes van het maken van een eenvoudige REST API met Spring Data REST. Het voorbeeld dat in dit artikel wordt gebruikt, is te vinden in het gekoppelde GitHub-project.