Hoe maak je een REST API met SpringMVC in Java

Inhoudsopgave

Deze tutorial zal leren hoe maak je een korte REST API in Java, met behulp van SpringMVC. We zullen de GET- en POST-instructies zien, de DELETE- en PUT-bewerkingen, het zou handig zijn om ze te doen om te oefenen. Voordat ik begin, raad ik aan om Eclipse STS te downloaden, een goede IDE voor programmeren in het voorjaar, het maakt het voor ons veel gemakkelijker om onze projecten te maken:

DOWNLOAD ECLIPSE STS

OpmerkingJe moet java geïnstalleerd hebben, als je versie 1.8 beter kiest.

Enkele algemene dingen om in gedachten te houden

  • We hebben een controller, die verantwoordelijk is voor het behandelen van de verzoeken die worden gedaan, de klasse die optreedt als controller moet worden genoteerd met @RestController.
  • Voor elke URL moeten we een methode implementeren. Elke methode moet bij de annotatie passen @RequestMapping met de URL waarop het wordt bijgewoond en de methode van het verzoek en het zal ook het gewenste object retourneren.

Nu gaan we een voorbeeld zien, daarin hebben we een Person-klasse en een controller voor de PersonController-persoon.

1. Start het project
We openen STS en geven een nieuw project"Voorjaarsproject starter”, We configureren de opties en de naam en geven Volgende, Ik zal het laten zoals je kunt zien in de volgende afbeelding:

VERGROTEN

[kleur = rgb (169,169,169)] Klik op de afbeelding om te vergroten [/ kleur]

In het volgende scherm dat verschijnt, moeten we de opties kiezen die we gaan gebruiken, we laten alles onaangeroerd en we klikken Af hebben en we hebben het project al gemaakt, we zullen de volgende structuur hebben (merk op dat ik al de 2 klassen heb gemaakt die we gaan gebruiken, en de opname is niet van STS):

Dat zullen we zien in src / main / java In het pakket is al een klasse gemaakt en deze bevat de volgende code:

 @SpringBootApplication openbare klasse VoorbeeldApiApplication {public static void main (String [] args) {SpringApplication.run (Application.class, args); }} 
We laten deze klasse zoals ze is, het helpt ons om ons voorbeeld te volgen. Laten we nu naar de les gaan pom.xml en we controleren of we de volgende code hebben, zo niet, dan voegen we deze gewoon toe:
 org.springframework.boot spring-boot-starter-parent 1.3.3.RELEASE org.springframework.boot spring-boot-starter-web 
OpmerkingMogelijk moet u uw project bijwerken met maven wanneer u dat bestand opslaat, in STS heeft u de mogelijkheid om dit te doen (ALT + F5).

Nu gaan we de klassen die we maken bekijken hoe ze eruit zien.

2. Persoonsklasse
Eerst zetten we de code en dan wordt het uitgelegd.

 openbare klasse Perona {privé lange id = -1; privé String-naam; privé int leeftijd; public Person () {} public Person (String name, int age) {super (); deze.naam = naam; deze.leeftijd = leeftijd; } public String getName () {return naam; } public void setName (String name) {this.name = naam; } public int getAge () {return leeftijd; } public void setAge (int e) {leeftijd = e; } public long getId () {return id; } public void setId (lange id) {this.id = id; }} 
Deze klasse is niet moeilijk te begrijpen, het enige dat u hoeft te weten is dat we de get en set van elk attribuut nodig hebben en ook de constructor zonder parameters, omdat deze door de controller zullen worden gebruikt, dus we zullen vermijden om met veel parameters en Spring te werken zal deze injecteren en het object maken.

3. PersonaController-klasse
Nogmaals, want het eerste deel is de code en dan de uitleg.

 @RestController public class PersonController {private Map people = new ConcurrentHashMap (); privé Lang gebruikt ID = 0; @RequestMapping (value = "/ people", method = RequestMethod.GET) public Collection damePeople () {return people.values ​​​​(); } @RequestMapping (waarde = "/ mensen", methode = RequestMethod.POST) @ResponseStatus (HttpStatus.CREATED) public Person addPersona (@RequestBody Person p) {idUsado ++; p.setId (idUsado); mensen.put (idUsado, p); retour p; } @RequestMapping (value = "/ people / {id}", method = RequestMethod.GET) public ResponseEntity getPersona (@PathVariable long id) {Person p = people.get (id); if (p! = null) retourneert nieuwe ResponseEntity (p, HttpStatus.OK); retourneer nieuwe ResponseEntity (HttpStatus.NOT_FOUND); }}
Wat we gaan geen database gebruiken We maken een kaart, als we een database hadden, zou deze worden vervangen door zijn repository, en de idUsado-variabele zou niet nodig zijn, maar het toevoegen van DB is niet het doel van de tutorial.
Binnen de annotatie Verzoektoewijzing We zien dat we ook de methode hebben, standaard is het GET, dus in die methoden zou het niet nodig zijn om het toe te voegen, maar het kan geen kwaad.

We hebben 3 methoden:
geef me mensenWat het zal doen, is alle mensen teruggeven die we op onze kaart hebben (mensen.waarden ()). Het heeft geen grote complicatie.

addPersonHet wordt gebruikt om een ​​persoon aan onze verzameling toe te voegen, je kunt zien dat de parameter die we hebben is geannoteerd met @RequestBody, is wat we van de klant ontvangen (de hoofdtekst van het verzoek). de annotatie

 @ResponseStatus (HttpStatus.CREATED)
Het is ingesteld om een ​​201 als antwoordcode te retourneren. Het is in het lichaam te zien hoe elke keer dat het wordt genoemd de id met één toeneemt, zodat het uniek is en we het aan de persoon toewijzen, dan voegen we het toe aan de kaart en uiteindelijk is het antwoordlichaam van de functie hetzelfde persoon.

getPersonDe gezochte persoon wordt via het id. Hier hebben we dat de functie retourneert

 ResponseEntiteit
Dit is zo om terug te keren a Oke en de persoon in het geval dat er of een NIET GEVONDEN. De parameter hier is geannoteerd met @PathVariable, die parameter heeft de waarde van {ID kaart} die je ziet in RequestMapping en is wat we in de URL plaatsen, bijvoorbeeld / people / 1 roept deze functie aan met de id in 1.

OpmerkingJe kunt de RequestMapping-annotatie direct boven de klas plaatsen, zoals ik hieronder laat zien:

 @RestController @RequestMapping ("/ mensen") openbare klasse PersonaController {…}
Als je dat doet, vermijd je herhaling van mensen in elke methode en kun je eenvoudig het volgende zeggen:
 @RequestMapping (waarde = "/", methode = RequestMethod.GET) 
Als er weinig methoden zijn, is het misschien niet de moeite waard, maar voor velen is het zeker de beste optie.

Nou, we hebben deze kleine API af.

4. Hoe het project uit te voeren?
Om het project uit te voeren, selecteert u uw project, in de menubalk ziet u een witte driehoek in een groene cirkel (de gebruikelijke uitvoering in eclips), klik op het kleine zwarte driehoekje aan de rechterkant, ga naar Runen en klik op Spring Boot-app.

VERGROTEN

[kleur = # a9a9a9] Klik op de afbeelding om te vergroten [/ kleur]

Als je het voorbeeld nu wilt uitbreiden, raad ik aan de methoden toe te voegen om verzoeken te dienen NEERZETTEN Y VERWIJDEREN, moet u de id weten van de persoon die u wilt wijzigen, dus u ontvangt deze zoals in de laatste functie en in PUT moet u ook de gegevens verzenden zoals we hebben gedaan in de POST-functie.

Als je wil test uw REST API zonder een klant te hoeven programmeren om verzoeken te doen je kunt de postbode gebruiken, het is een Google Chrome-plug-in:

Hier kunt u het type verzoek kiezen dat u wilt, de headers en de body invullen die moeten worden verzonden, als het authenticatie vereist, enz. Het is een zeer compleet programma.

VERGROTEN

[kleur = # a9a9a9] Klik op de afbeelding om te vergroten [/ kleur]

Bijvoorbeeld een get-verzoek om alle mensen in de API op localhost te laten draaien en te luisteren op poort 80:

Vond je deze Tutorial leuk en heb je eraan geholpen?Je kunt de auteur belonen door op deze knop te drukken om hem een ​​positief punt te geven

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave