Hvordan lage et REST API med SpringMVC i Java

Innholdsfortegnelse

Denne opplæringen vil lære hvordan lage en kort REST API i Java, ved hjelp av SpringMVC. Vi vil se GET og POST instruksjonene, DELETE og PUT operasjonene, det ville være praktisk for deg å gjøre dem for øvelse. Før du starter, anbefaler jeg å laste ned Eclipse STS, en god IDE for programmering om våren, det gjør det mye lettere for oss å lage våre prosjekter:

Laster ned ECLIPSE STS

MerkDu må ha java installert hvis du velger versjon 1.8 bedre.

Noen generelle ting å huske på

  • Vi har en behandlingsansvarlig, som har ansvaret for å ivareta forespørslene som kommer, den klassen som fungerer som kontrollør må noteres med @RestController.
  • For hver URL må vi implementere en metode. Hver metode må følge med merknaden @RequestMapping med nettadressen den blir besøkt på og metoden for forespørselen, og den vil også returnere ønsket objekt.

Nå skal vi se et eksempel, i den vil vi ha en Person -klasse og en kontroller for PersonController -personen.

1. Start prosjektet
Vi åpner STS og gir et nytt prosjekt "Spring Project Starter”, Vi konfigurerer alternativene og navnet og gir Neste, Jeg lar det være slik du kan se på bildet nedenfor:

FORSTØRRE

[color = rgb (169,169,169)] Klikk på bildet for å forstørre [/ color]

I den neste skjermen som skal vises, må vi velge alternativene vi skal bruke, vi skal la alt stå urørt og vi klikker Bli ferdig og vi har allerede opprettet prosjektet, vil vi ha følgende struktur (Vær oppmerksom på at jeg allerede har opprettet de 2 klassene vi skal bruke, og fangsten er ikke fra STS):

Det får vi se i src / main / java Inne i pakken er det allerede opprettet en klasse, og den inneholder følgende kode:

 @SpringBootApplication offentlig klasse ExampleApiApplication {public static void main (String [] args) {SpringApplication.run (Application.class, args); }} 
Vi forlater denne klassen som den er, det hjelper oss å kjøre vårt eksempel. La oss gå til klassen pom.xml og vi sjekker om vi har følgende kode, hvis det ikke er det, legger vi den til:
 org.springframework.boot spring-boot-starter-parent 1.3.3.RELEASE org.springframework.boot spring-boot-starter-web 
MerkDu må kanskje oppdatere prosjektet ditt med maven når du lagrer filen, i STS har du muligheten til å gjøre det (ALT + F5).

Nå skal vi se klassene som vi lager hvordan de ser ut.

2. Person klasse
Først legger vi koden og deretter forklares den.

 offentlig klasse Perona {private long id = -1; private strengnavn; privat alder; offentlig person () {} offentlig person (strengnavn, alder) {super (); dette.navn = navn; this.age = alder; } public String getName () {returnavn; } public void setName (strengnavn) {this.name = navn; } public int getAge () {returalder; } public void setAge (int e) {age = e; } public long getId () {retur -ID; } public void setId (long id) {this.id = id; }} 
Denne klassen er ikke vanskelig å forstå, alt du trenger å vite er at vi trenger get og sett for hvert attributt og også konstruktøren uten parametere, siden de vil bli brukt av kontrolleren, så vi vil unngå å jobbe med mange parametere og våren vil injisere disse og lage objektet.

3. PersonaController -klasse
Igjen som den første delen er koden og deretter forklaringen.

 @RestController offentlig klasse PersonController {private Map people = new ConcurrentHashMap (); private Long usedID = 0; @RequestMapping (value = "/ people", method = RequestMethod.GET) offentlig samling damePeople () {return people.values ​​(); } @RequestMapping (value = "/ people", method = RequestMethod.POST) @ResponseStatus (HttpStatus.CREATED) offentlig person addPersona (@RequestBody Person p) {idUsado ++; p.setId (idUsado); people.put (idUsado, p); retur p; } @RequestMapping (value = " / people / {id}", method = RequestMethod.GET) public ResponseEntity getPersona (@PathVariable long id) {Person p = people.get (id); hvis (p! = null) returnerer ny ResponseEntity (p, HttpStatus.OK); returner ny ResponseEntity (HttpStatus.NOT_FOUND); }}
Hva vi kommer ikke til å bruke en database Vi lager et kart, hvis vi hadde en database, ville dette blitt erstattet av depotet, og idUsado -variabelen ville ikke være nødvendig, men å legge til DB er ikke målet med opplæringen.
Inne i kommentaren RequestMapping Vi ser at vi også har metoden, som standard er den GET, så i disse metodene ville det ikke være nødvendig å legge den til, men det gjør ikke vondt.

Vi har 3 metoder
gi meg folkDet vil gjøre å returnere alle menneskene vi har på kartet vårt (people.values ​​()). Det har ingen større komplikasjon.

addPersonDen brukes til å legge til en person i samlingen vår, du kan se at parameteren vi har er merket med @RequestBody, er det vi mottar fra klienten (selve forespørselen). Kommentaren

 @ResponseStatus (HttpStatus.CREATED)
Den er satt til å returnere en 201 som en svarskode. Det kan sees i kroppen hvordan hver gang det kalles id øker med en, slik at det er unikt og vi tilordner det til personen, så legger vi det til kartet og til slutt er svarlegemet til funksjonen det samme person.

getPersonDen forespurte personen vil bli returnert til oss gjennom ID -en. Her har vi at funksjonen returnerer

 ResponseEntity
Dette er for å returnere a greit og personen i tilfelle det er eller a IKKE FUNNET. Parameteren her er merket med @PathVariable, vil parameteren ha verdien av {id} som du ser i RequestMapping og er det vi legger inn i URL -en, for eksempel / people / 1 kaller denne funksjonen med ID -en i 1.

MerkDu kan sette RequestMapping -kommentaren rett over klassen, slik jeg viser nedenfor:

 @RestController @RequestMapping ("/ people") public class PersonaController {…}
Hvis du gjør det, vil du unngå å gjenta folk i hver metode, og du kan ganske enkelt sette følgende:
 @RequestMapping (value = "/", method = RequestMethod.GET) 
Hvis det er få metoder, er det kanskje ikke verdt det, men for mange er det absolutt det beste alternativet.

Vel, vi har fullført denne lille APIen.

4. Hvordan kjøre prosjektet
For å kjøre prosjektet, velg prosjektet ditt, i menylinjen vil du se en hvit trekant inne i en grønn sirkel (den vanlige kjøringen i elclipse), klikk på den lille svarte trekanten til høyre, gå til Runer og klikk på Spring Boot App.

FORSTØRRE

[color = # a9a9a9] Klikk på bildet for å forstørre [/ color]

Hvis du vil utvide eksemplet, anbefaler jeg at du legger til metodene for å betjene forespørsler SETTE Y SLETT, må du vite ID -en til personen som skal endres, så du vil motta den som i den siste funksjonen, og i PUT må du også sende dataene slik vi har gjort i POST -funksjonen.

Hvis du vil test REST API uten å måtte programmere en klient for å komme med forespørsler du kan bruke postbud, det er en Google Chrome -plugin:

Her kan du velge ønsket type forespørsel, fylle ut overskrifter og brødtekst som må sendes, hvis det krever autentisering osv. Det er et veldig komplett program.

FORSTØRRE

[color = # a9a9a9] Klikk på bildet for å forstørre [/ color]

For eksempel en få forespørsel om å få alle personene i API -en til å kjøre på localhost og lytte på port 80:

Likte og hjalp du denne opplæringen?Du kan belønne forfatteren ved å trykke på denne knappen for å gi ham et positivt poeng

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave