Hur man gör ett REST API med SpringMVC i Java

Innehållsförteckning

Denna handledning kommer att lära hur man gör ett kort REST API i Java med SpringMVC. Vi kommer att se GET- och POST -instruktionerna, DELETE och PUT -operationerna, det skulle vara bekvämt för dig att göra dem för övning. Innan jag börjar rekommenderar jag att du laddar ner Eclipse STS, en bra IDE för programmering under våren, det gör det mycket lättare för oss att skapa våra projekt:

LADDA NER ECLIPSE STS

NoteraDu måste ha Java installerat om du väljer version 1.8 bättre.

Några allmänna saker att tänka på

  • Vi har en registeransvarig som ansvarar för att hantera de begäranden som görs, klassen som fungerar som registeransvarig måste noteras med @RestController.
  • För varje URL måste vi implementera en metod. Varje metod måste följa med kommentaren @RequestMapping med webbadressen som den används och metoden för förfrågan och det kommer också att returnera det önskade objektet.

Nu ska vi se ett exempel, i den kommer vi att ha en Person -klass och en controller för PersonController -personen.

1. Starta projektet
Vi öppnar STS och ger ett nytt projekt "Spring Project Starter”, Vi konfigurerar alternativen och namnet och ger Nästa, Jag lämnar det som du kan se i följande bild:

FÖRSTORA

[color = rgb (169 169 169)] Klicka på bilden för att förstora [/ color]

I nästa skärm som kommer att visas måste vi välja de alternativ som vi ska använda, vi kommer att lämna allt orört och vi klickar Avsluta och vi har redan projektet skapat, vi kommer att ha följande struktur (Observera att jag redan har skapat de två klasserna som vi ska använda, och fångsten är inte från STS):

Det får vi se i src / main / java Inne i paketet finns redan en klass och den innehåller följande kod:

 @SpringBootApplication public class ExempelApiApplication {public static void main (String [] args) {SpringApplication.run (Application.class, args); }} 
Vi lämnar denna klass som den är, det hjälper oss att köra vårt exempel. Nu ska vi gå till klassen pom.xml och vi kontrollerar om vi har följande kod, om det inte är det lägger vi till det helt enkelt:
 org.springframework.boot spring-boot-starter-parent 1.3.3.RELEASE org.springframework.boot spring-boot-starter-web 
NoteraDu kan behöva uppdatera ditt projekt med maven när du sparar filen, i STS har du möjlighet att göra det (ALT + F5).

Nu ska vi se klasserna som vi skapar hur de ser ut.

2. Personklass
Först lägger vi koden och sedan förklaras den.

 public class Perona {privat lång id = -1; privat strängnamn; privat int ålder; offentlig person () {} offentlig person (strängnamn, int ålder) {super (); detta.namn = namn; this.age = ålder; } public String getName () {return name; } public void setName (strängnamn) {this.name = namn; } public int getAge () {returålder; } public void setAge (int e) {age = e; } public long getId () {return id; } public void setId (long id) {this.id = id; }} 
Denna klass är inte svår att förstå, allt du behöver veta är att vi behöver get och set för varje attribut och även konstruktören utan parametrar, eftersom de kommer att användas av regulatorn, så vi slipper arbeta med många parametrar och vår kommer att injicera dessa och skapa objektet.

3. PersonaController -klass
Återigen som den första delen är koden och sedan förklaringen.

 @RestController public class PersonController {private Map people = new ConcurrentHashMap (); privat Long usedID = 0; @RequestMapping (value = "/ people", method = RequestMethod.GET) offentlig samling damePeople () {return people.values ​​(); } @RequestMapping (value = "/ people", method = RequestMethod.POST) @ResponseStatus (HttpStatus.CREATED) public 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); om (p! = null) returnerar ny ResponseEntity (p, HttpStatus.OK); returnera ny ResponseEntity (HttpStatus.NOT_FOUND); }}
Vad vi kommer inte att använda en databas Vi skapar en karta, om vi hade en databas skulle detta ersättas av dess förråd, och idUsado -variabeln skulle inte vara nödvändig, men att lägga till DB är inte syftet med självstudien.
Inuti kommentaren RequestMapping Vi ser att vi också har metoden, som standard är det GET, så i de metoderna skulle det inte vara nödvändigt att lägga till det, men det gör inte ont.

Vi har 3 metoder
ge mig folkVad det kommer att göra är att returnera alla människor vi har på vår karta (people.values ​​()). Det har ingen större komplikation.

addPersonDen används för att lägga till en person i vår samling, du kan se att parametern vi har är annoterad med @RequestBody, är vad vi får från klienten (begäran). Anteckningen

 @ResponseStatus (HttpStatus.CREATED)
Den är inställd på att returnera en 201 som en svarskod. Det kan ses i kroppen hur varje gång det kallas id ökar med ett, så att det är unikt och vi tilldelar det till personen, sedan lägger vi till det på kartan och slutligen är svarets kropp för funktionen samma person.

getPersonDen efterfrågade personen kommer att returneras till oss via id. Här har vi att funktionen returnerar

 SvarEntity
Detta är så att returnera en Okej och personen om det finns eller a HITTADES INTE. Parametern här är annoterad med @PathVariable, kommer den parametern att ha värdet av {id} som du ser i RequestMapping och är vad vi lägger in i webbadressen, till exempel / people / 1 kallar denna funktion med id i 1.

NoteraDu kan lägga RequestMapping -anteckningen precis ovanför klassen, som jag visar nedan:

 @RestController @RequestMapping ("/ people") public class PersonaController {…}
Om du gör det kommer du att undvika att upprepa personer i varje metod och du kan helt enkelt sätta följande:
 @RequestMapping (value = "/", method = RequestMethod.GET) 
Om det finns få metoder är det kanske inte värt det, men för många är det verkligen det bästa alternativet.

Tja, vi har slutfört detta lilla API.

4. Hur man driver projektet
För att köra projektet, välj ditt projekt, i menyraden ser du en vit triangel inuti en grön cirkel (den vanliga körningen i elclipse), klicka på den lilla svarta triangeln till höger, gå till Runor och klicka på Spring Boot App.

FÖRSTORA

[color = # a9a9a9] Klicka på bilden för att förstora [/ color]

Om du vill utöka exemplet rekommenderar jag att du lägger till metoderna för att betjäna förfrågningar SÄTTA Y RADERA, du kommer att behöva känna till id: n för personen som ska modifieras, så du får den som i den senaste funktionen och i PUT måste du också skicka data som vi har gjort i POST -funktionen.

Om du vill testa ditt REST API utan att behöva programmera en klient för att göra förfrågningar du kan använda brevbärare, det är ett Google Chrome -plugin:

Här kan du välja vilken typ av förfrågan du vill ha, fyll i rubrikerna och kroppen som måste skickas, om det kräver autentisering etc. Det är ett mycket komplett program.

FÖRSTORA

[color = # a9a9a9] Klicka på bilden för att förstora [/ color]

Till exempel en get -begäran för att få alla människor i API: t att köra på localhost och lyssna på port 80:

Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave