Come creare un'API REST con SpringMVC in Java

Sommario

Questo tutorial insegnerà come creare una breve API REST in Java, usando SpringMVC. Vedremo le istruzioni GET e POST, le operazioni DELETE e PUT, sarebbe conveniente farle per esercitarsi. Prima di iniziare, consiglio di scaricare Eclipse STS, un buon IDE per la programmazione in primavera, ci rende molto più facile creare i nostri progetti:

SCARICA ECLIPSE STTS

NotaDevi avere java installato, se scegli la versione 1.8 migliore.

Alcune cose generali da tenere a mente

  • Abbiamo un controller, che è incaricato di occuparsi delle richieste che vengono fatte, la classe che funge da controller deve essere annotata con @RestController.
  • Per ogni URL dobbiamo implementare un metodo. Ogni metodo dovrà andare con l'annotazione @RequestMapping con l'URL a cui si attende e il metodo della richiesta e restituirà anche l'oggetto desiderato.

Ora vedremo un esempio, in esso avremo una classe Person e un controller per la persona PersonController.

1. Avvia il progetto
Apriamo STS e diamo un nuovo progetto"Avvio del progetto di primavera”, configuriamo le opzioni e il nome e diamo Prossimo, lo lascerò come puoi vedere nell'immagine seguente:

INGRANDIRE

[color = rgb (169,169,169)] Clicca sull'immagine per ingrandirla [/ color]

Nella schermata successiva che apparirà, dobbiamo scegliere le opzioni che utilizzeremo, lasceremo tutto intatto e faremo clic Fine e abbiamo già creato il progetto, avremo la seguente struttura (Nota che ho già creato le 2 classi che useremo e l'acquisizione non è da STS):

Lo vedremo in src / main / java All'interno del pacchetto è già stata creata una classe e contiene il seguente codice:

 @SpringBootApplication public class ExampleApiApplication {public static void main (String [] args) {SpringApplication.run (Application.class, args); }} 
Lasciamo questa classe così com'è, ci aiuta a eseguire il nostro esempio. Ora andiamo in classe pom.xml e controlliamo se abbiamo il seguente codice, in caso contrario lo aggiungiamo semplicemente:
 org.springframework.boot spring-boot-starter-parent 1.3.3.RELEASE org.springframework.boot spring-boot-starter-web 
NotaPotrebbe essere necessario aggiornare il progetto con Maven quando si salva quel file, in STS hai la possibilità di farlo (ALT + F5).

Ora vedremo le classi che creiamo come appaiono.

2. Classe di persona
Prima mettiamo il codice e poi viene spiegato.

 public class Perona {private long id = -1; nome stringa privato; età int privata; public Person () {} public Person (String name, int age) {super (); this.name = nome; questo.età = età; } public String getName () {restituisce il nome; } public void setName (nome stringa) {this.name = nome; } public int getAge() {return age; } public void setAge (int e) {age = e; } public long getId() {return id; } public void setId (id lungo) {this.id = id; }} 
Questa classe non è difficile da capire, tutto quello che devi sapere è che abbiamo bisogno del get e set di ogni attributo e anche del costruttore senza parametri, poiché verranno utilizzati dal controller, quindi eviteremo di lavorare con molti parametri e Spring li inietterà e creerà l'oggetto.

3. Classe PersonaController
Anche in questo caso la prima parte è il codice e poi la spiegazione.

 @RestController public class PersonController {private Map people = new ConcurrentHashMap (); private Long usedID = 0; @RequestMapping (value = "/ people", method = RequestMethod.GET) public Collection damePeople () {return people.values ​​​​(); } @RequestMapping (value = "/ people", method = RequestMethod.POST) @ResponseStatus (HttpStatus.CREATED) public Person addPersona (@RequestBody Person p) {idUsado ++; p.setId (idUsado); persone.put (idUsado, p); restituire p; } @RequestMapping (value = "/ people / {id}", metodo = RequestMethod.GET) public ResponseEntity getPersona (@PathVariable long id) {Person p = people.get (id); if (p! = null) restituisce una nuova ResponseEntity (p, HttpStatus.OK); restituisce una nuova ResponseEntity (HttpStatus.NOT_FOUND); }}
Che cosa non useremo un database Creiamo una mappa, se avessimo un database questo sarebbe sostituito dal suo repository e la variabile idUsado non sarebbe necessaria, ma aggiungere DB non è l'obiettivo del tutorial.
Dentro l'annotazione RichiestaMapping Vediamo che abbiamo anche il metodo, di default è GET, quindi in quei metodi non sarebbe necessario aggiungerlo, ma non fa male.

Abbiamo 3 metodi
dammi genteQuello che farà è restituire tutte le persone che abbiamo sulla nostra mappa (persone.valori()). Non ha grosse complicazioni.

aggiungipersonaÈ usato per aggiungere una persona alla nostra collezione, puoi vedere che il parametro che abbiamo è annotato con @RequestBody, è ciò che riceviamo dal client (il corpo della richiesta). L'annotazione

 @ResponseStatus (HttpStatus.CREATED)
È impostato per restituire un 201 come codice di risposta. Si può vedere nel body come ogni volta che viene chiamato l'id aumenta di uno, in modo che sia unico e lo assegniamo alla persona, quindi lo aggiungiamo alla mappa e infine il corpo della risposta della funzione è lo stesso persona.

getPersonaLa persona ricercata ci verrà restituita tramite l'id. Qui abbiamo che la funzione restituisce

 EntitàRisposta
Questo è così per tornare a va bene e la persona nel caso ci sia o a NON TROVATO. Il parametro qui è annotato con @VariabilePercorso, quel parametro avrà il valore di {ID} che vedi in RequestMapping ed è ciò che inseriamo nell'URL, ad esempio / people/1 chiama questa funzione con l'id in 1.

NotaPuoi inserire l'annotazione RequestMapping proprio sopra la classe, come mostro di seguito:

 @RestController @RequestMapping ("/ persone") public class PersonaController {…}
Se lo fai, eviterai di ripetere le persone in ogni metodo e puoi semplicemente inserire quanto segue:
 @RequestMapping (valore = "/", metodo = RequestMethod.GET) 
Se ci sono pochi metodi, potrebbe non valerne la pena, ma per molti è sicuramente l'opzione migliore.

Bene, abbiamo finito questa piccola API.

4. Come eseguire il progetto
Per eseguire il progetto, seleziona il tuo progetto, nella barra dei menu vedrai un triangolo bianco all'interno di un cerchio verde (la solita corsa in elclipse), fai clic sul piccolo triangolo nero a destra, vai su rune e clicca su App Spring Boot.

INGRANDIRE

[color = # a9a9a9] Clicca sull'immagine per ingrandirla [/ color]

Ora, se vuoi espandere l'esempio, ti consiglio di aggiungere i metodi per servire le richieste METTEREELIMINA, dovrai conoscere l'id della persona da modificare, quindi lo riceverai come nell'ultima funzione e in PUT dovrai anche inviare i dati come abbiamo fatto nella funzione POST.

Se vuoi prova la tua API REST senza dover programmare un client per fare richieste puoi usare il postino, è un plug-in di Google Chrome:

Qui puoi scegliere il tipo di richiesta che desideri, compilare le intestazioni e il corpo che devono essere inviati, se richiede l'autenticazione, ecc. È un programma molto completo.

INGRANDIRE

[color = # a9a9a9] Clicca sull'immagine per ingrandirla [/ color]

Ad esempio una richiesta get per ottenere tutte le persone nell'API in esecuzione su localhost e in ascolto sulla porta 80:

Ti è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave