Introduksjon til vårdata REST

1. Oversikt

Denne artikkelen vil forklare det grunnleggende i Spring Data REST og vise hvordan du bruker det til å bygge et enkelt REST API.

Generelt er Spring Data REST bygget på toppen av Spring Data-prosjektet og gjør det enkelt å bygge hypermediadrevne REST-webtjenester som kobles til Spring Data-repositorier - alle bruker HAL som den drivende hypermedietypen.

Det tar bort mye manuelt arbeid som vanligvis er forbundet med slike oppgaver, og gjør implementering av grunnleggende CRUD-funksjonalitet for webapplikasjoner ganske enkel.

2. Maven-avhengigheter

Følgende Maven-avhengigheter kreves for vår enkle applikasjon:

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

Vi bestemte oss for å bruke Spring Boot for dette eksemplet, men classic Spring vil også fungere bra. Vi valgte også å bruke den innebygde H2-databasen for å unngå ekstra oppsett, men eksemplet kan brukes på hvilken som helst database.

3. Skrive søknaden

Vi begynner med å skrive et domeneobjekt for å representere en bruker av nettstedet vårt:

@Entity offentlig klasse WebsiteUser {@Id @GeneratedValue (strategi = GenerationType.AUTO) privat lang id; privat strengnavn; privat streng e-post; // standard getters og setters}

Hver bruker har et navn og en e-postadresse, samt en automatisk generert ID. Nå kan vi skrive et enkelt arkiv:

@RepositoryRestResource (collectionResourceRel = "brukere", sti = "brukere") offentlig grensesnitt UserRepository utvider PagingAndSortingRepository {List findByName (@Param ("name") Strengnavn); }

Dette er et grensesnitt som lar deg utføre forskjellige operasjoner med Nettstedsbruker gjenstander. Vi definerte også et tilpasset spørsmål som vil gi en liste over brukere basert på et gitt navn.

De @RepositoryRestResource kommentar er valgfri og brukes til å tilpasse REST-sluttpunktet. Hvis vi bestemte oss for å utelate det, ville Spring automatisk opprette et endepunkt ved “/ nettstedBrukere" i stedet for "/ brukere“.

Til slutt vil vi skrive en standard Spring Boot hovedklasse for å initialisere applikasjonen:

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

Det er det! Vi har nå et fullt funksjonelt REST API. La oss se på det i aksjon.

4. Få tilgang til REST API

Hvis vi kjører applikasjonen og går til // localhost: 8080 / i en nettleser, vil vi motta følgende JSON:

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

Som du kan se, er det en “/ brukere”Endepunkt tilgjengelig, og det har allerede“?side“, “?størrelse”Og”?sortere”Opsjoner.

Det er også en standard “/profil”Endepunkt, som gir applikasjonsmetadata. Det er viktig å merke seg at responsen er strukturert på en måte som følger begrensningene i REST-arkitekturen. Spesielt gir det et jevnt grensesnitt og selvbeskrivende meldinger. Dette betyr at hver melding inneholder nok informasjon til å beskrive hvordan du behandler meldingen.

Det er ingen brukere i applikasjonen vår ennå, så å gå til // localhost: 8080 / brukere vil bare vise en tom liste over brukere. La oss bruke krøll for å legge til en bruker.

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

La oss ta en titt på responsoverskriftene også:

HTTP / 1.1 201 Opprettet server: Apache-Coyote / 1.1 Sted: // localhost: 8080 / brukere / 1 Innholdstype: applikasjon / hal + json; charset = UTF-8 Transfer-Encoding: chunked

Du vil merke at den returnerte innholdstypen er “applikasjon / hal + json“. HAL er et enkelt format som gir en jevn og enkel måte å hyperkoble mellom ressurser i API-et ditt. Overskriften inneholder også automatisk plassering header, som er adressen vi kan bruke for å få tilgang til den nyopprettede brukeren.

Vi kan nå få tilgang til denne brukeren på // localhost: 8080 / brukere / 1

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

Du kan også bruke curl eller en hvilken som helst annen REST-klient til å sende PUT-, PATCH- og DELETE-forespørsler. Det er også viktig å merke seg at Spring Data REST automatisk følger prinsippene til HATEOAS. HATEOAS er en av begrensningene i REST-arkitekturen, og det betyr at hypertekst skal brukes til å finne veien gjennom API.

Til slutt, la oss prøve å få tilgang til det tilpassede spørringen vi skrev tidligere, og finne alle brukere med navnet "test". Dette gjøres ved å gå til // localhost: 8080 / users / search / findByName? Name = test

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

5. Konklusjon

Denne opplæringen demonstrerte det grunnleggende om å lage en enkel REST API med Spring Data REST. Eksemplet som brukes i denne artikkelen finner du i det tilknyttede GitHub-prosjektet.


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