Esercitazioni di Spring Boot 2: il nostro primo controller REST
Dopo aver fatto la conoscenza di Spring Boot e analizzato la tipica struttura di un progetto vediamo come costruire in concreto una semplice applicazione per apprendere i concetti di base e poi lanciarci in qualcosa di più complesso.
L'idea è di creare una semplice API basata su REST che ci consenta di interrogare un database di calciatori e di fare le classiche operazioni CRUD.
Inizialmente ci serviremo di un array costruito a mano, poi realizzeremo un piccolo database a cui collegare l'applicazione.
Cercherò di non dilungarmi eccessivamente anche perchè tutto il codice è disponibile sul mio repository GitHub.
Per prima cosa creiamo un nuovo progetto seguendo le indicazioni riportate in un precedente post.
Lo chiamiamo Players
per cui Spring Initializer genererà in automatico la classe PlayersApplication
.
Per il momento possiamo ignorarla.
Dobbiamo invece creare la classe Player
che modella il nostro calciatore. Sono sufficienti pochi attributi come il nome, il cognome e la squadra di appartenenza (tutti di tipo String) nonchè i relativi metodi getter e setter che qualsiasi IDE è in grado di generare per noi automaticamente.
Nel codice che trovate su GitHub ho utilizzato dei termini inglesi per dare un tocco più internazionale al tutto :-)
Aggiungiamo anche un attributo id
di tipo intero che ci servirà in seguito. Va da sè che rappresenta una sorta di chiave primaria per l'identificazione del singolo calciatore.
Ed eccoci al clou: la classe PlayersController
.
Si tratta di una tipica classe Java contenente alcune annotazioni specifiche di Spring Boot.
In particolare @RestController
serve a denotare la sua natura e ad informare il framework che la gestione della stessa sarà di sua competenza.
Infatti si può osservare che da nessuna parte viene creata esplicitamente un'istanza di questa classe, ma è appunto il framework a farlo all'avvio dell'applicazione, rendendo disponibili i servizi da essa offerti.
Ma di quali servizi stiamo parlando?
Si tratta di di un'API con un singolo endpoint "/players"
che restituisce un elenco di calciatori.
Da un punto di vista pratico si tratta di un elementare metodo pubblico, getAllPlayers()
, che ritorna una lista i cui elementi sono di tipo Player
.
La lista è per ora creata manualmente.
Ciò che trasforma magicamente questo metodo in un endpoint é l'annotazione @RequestMapping
a cui passiamo come parametro la stringa "/players"
che ne indica il path.
In assenza di ulteriori parametri la `@RequestMapping effettua implicitamente una chiamata di tipo GET.
Non ci resta che compilare ed eseguire l'applicazione e puntare il browser all'indirizzo http://localhost:8080/players
o in alternativa ricorrere a curl da riga di comando.
In entrambi i casi vedremo un oggetto JSON contenente la lista dei tre giocatori.
In fin dei conti è davvero uno scherzo mettere in piedi lo scheletro di un servizio REST.
In seguito vedremo come aggiungere ulteriori endpoint e quali parametri è possibile specificare nelle annotazioni previste dal controller.
Stay tuned!
[VIDEO]
[LINKS]
- Esercitazioni di Spring Boot - Indice argomenti
- Tutorial di Spring Boot - Indice argomenti
- Codice su GitHub
- Flashcards Anki per lo studio
- Libri consigliati