CRUD con Spring Boot REST JPA

Per realizzare dei servizi REST è possibile utilizzare il framework Spring Boot, che proprio per la sua definizione permette di avere velocemente a disposizione un’applicazione pronta per essere utilizzata in produzione. In questo articolo vedremo come semplicemente mettere in piedi un applicazione con Spring Boot che esponga un servizio REST recuperando informazioni dal database con JPA

Configurazione progetto

Per definire lo scheletro del nostro progetto Spring Boot REST JPA dobbiamo prima di tutto scrivere il pom dove riporteremo le varie dipendenze necessarie

Sono presenti diverse dipendenze relative a Spring Boot e una relativa al database H2 che utilizzeremo per memorizzare i dati. Il packaging del progetto è di tipo war perchè quello che vogliamo avere è qualcosa di cui potremo effettuare il deploy su un application server, ma durante lo sviluppo potremo lanciare l’applicazione utilizzando la classe ApplicationStarter che vediamo riportata qui di seguito

L’annotation SpringBootApplication racchiude le tre annotazioni @Configuration, @EnableAutoConfiguration e @ComponentScan. Utilizzando nella nostra classe questa annotazione riusciamo a far partire il contesto Spring e quindi a caricare tutte le cose di cui abbiamo bisogno.

 

Entity, Repository e REST

Partiamo prima di tutto dal modello dei dati che si vogliono gestire. Tanto per essere originali il nostro modello dati sarà un articolo, che vediamo nella classe entity riportata di seguito

Ora grazie ad una singola annotazione potremo fare una magia, perchè definendo semplicemente il classico Repository Spring Data JPA e mettendoci sopra l’annotazione @RepositoryRestResource esporremo l’entità come risorsa REST, aggiungendo anche dei metodi search particolari

Oltre ad esporre la nostra entity come risorsa REST siamo andati a bloccare alcune operazioni. Infatti annotando con @RestResource(exported = false) un metodo evitiamo che questo sia richiamabile tramite REST. In questo modo possiamo ad esempio gestire delle informazioni che vengono alimentate da altri programmi e vogliamo esporre tramite REST soltanto per la consultazione.

 

Test dell’applicazione

Per richiamare la nostra applicazione dobbiamo utilizzare qualche client che ci permetta di effettuare chiamate REST. Potete utilizzare tool come RESTClient dentro Firefox o Postman. Tutte le chiamate dovranno specificare che il Content-Type è di tipo application/json. Come prima cosa facciamo degli inserimenti richiamando l’URL http://localhost:8080/articoli con il verbo HTTP POST, utilizzando un body del messaggio come quello riportato di seguito

la risposta che riceviamo è la seguente

Passiamo quindi a pubblicare il secondo articolo con i seguenti dati

Ora se richiamiamo l’URL http://localhost:8080/articoli con il metodo GET otterremo la lista di tutti gli articoli attualmente salvati

Se proviamo a cancellare un articolo utilizzando l’URL http://localhost:8080/articoli/1 e la DELETE riceviamo il seguente errore (corretto visto che l’abbiamo richiesto noi)

Status Code: 405
Allow: GET,HEAD,PUT,PATCH,OPTIONS

Se proviamo poi a richiamare in GET l’URL http://localhost:8080/articoli/search ci ritornano le ricerche che abbiamo definito nel repository

Provando ad esempio la ricerca per tag, con l’URL http://localhost:8080/articoli/search/findByTaglistIn?tags=primo otterremo nella risposta tutti gli articoli che hanno un tag con scritto “primo”. Buon proseguimento in compagni di Spring Boot 🙂

Una risposta

  1. marzo 28, 2017

    […] I also liked this Federico’s Italian-language post on supporting CRUD with Spring Data REST and Spring Data JPA […]