immagine spring framework mancante

Cos’è un Framework

Un Framework, semplificando, è un insieme di classi, librerie e strumenti predefiniti che forniscono una struttura di base per lo sviluppo di applicazioni software. L’uso di un Framework consente agli sviluppatori di evitare l’implementazione da zero di funzionalità di base, permettendo loro di concentrarsi sullo sviluppo di funzionalità specifiche e personalizzate per il progetto.

Spring

Spring è un framework open source per lo sviluppo di applicazioni Java. La prima versione del framework è stata distribuita nel 2003 da Rod Johnson ed è stata arricchita nel corso degli anni con una serie di estensioni.

Nel tempo, Spring si è guadagnato un ruolo di primo piano nello sviluppo di applicazioni Java, grazie anche a una comunità molto prolifica e alla vasta disponibilità di documentazione ed esempi pratici.

In questo articolo, vedremo come con Spring sia possibile creare un’applicazione di base per lo sviluppo di API. L’esempio sarà realizzato in Java e utilizzeremo SQL come database.

Web App con Spring

Come accennato, il framework base di Spring è stato arricchito nel tempo con numerose funzionalità, creando di fatto una famiglia di framework. Utilizzando una o più di queste risorse, è possibile creare un web service in Java che implementa delle REST API, utilizzabili per la realizzazione di un sito web o di qualsiasi altra applicazione (ad esempio, un’app per Android/iOS).

Web Service

Un web service è un software in grado di comunicare tramite il protocollo HTTP con qualsiasi applicazione, offrendo funzionalità appositamente implementate. Un esempio potrebbe essere un sito di previsioni meteorologiche: dietro l’interfaccia grafica che mostra la mappa del luogo di interesse, si nasconde un web service che elabora la richiesta dell’utente (ad esempio, la selezione di una località) e fornisce la previsione meteorologica basata sui dati a disposizione.

Rest API

Quando si parla di API RESTful, non si fa riferimento a protocolli o standard, ma a una serie di regole universalmente condivise.

Le principali caratteristiche che un’API deve avere per essere considerata RESTful sono:

  • Devono esserci due attori, Client e Server, e delle risorse da condividere.
  • La comunicazione tra Client e Server deve essere stateless.
  • È possibile utilizzare strumenti di caching per migliorare la velocità delle interazioni tra Client e Server.
  • Deve essere prevista un’interfaccia per uniformare le informazioni trasferite.

Applicazione d’esempio

Ora vedremo come realizzare un’applicazione di esempio basata su Spring, utilizzando il linguaggio Java. Successivamente, aggiungeremo la possibilità di salvare i dati in un database SQL e, infine, implementeremo un meccanismo di autenticazione utente.

Iniziamo visitando questo link per generare un progetto con le configurazioni di base per Java e Maven (o Gradle, a seconda delle preferenze).

immagine spring initializer non disponibile

Sebbene sia possibile configurare le dipendenze automaticamente, preferisco aggiungerle manualmente, come vedremo tra poco. Una volta settate tutte le opzioni, cliccando su Generate verrà scaricato uno zip contenente tutto il necessario per iniziare.

Assicurati di avere tutto correttamente installato nel tuo ambiente di sviluppo. Aprendo il progetto appena scaricato con il tuo IDE preferito, potrai avviare l’applicazione, che, allo stato attuale, non farà ancora nulla.

Dipendenze

Vediamo ora quali sono le dipendenze minime necessarie per realizzare il nostro web service. Il miglior posto dove cercare le dipendenze è mvnrepository.com .

Apriamo il file pom.xml e definiamo le dipendenze necessarie. La prima e probabilmente la più importante è:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

Questa dipendenza va aggiunta all’interno del tag <dependencies></dependencies> .

Se utilizzi IntelliJ, ogni volta che modifichi il file pom.xml, dovrai cliccare sull’icona apposita per applicare le modifiche:

Riavviando l’applicazione, vedrai nel log delle righe simili a queste:

  • Tomcat started on port 8080 (http) with context path ‘/’
  • Started DemoApplication in X seconds (process running for Y)

Questi log indicano che l’applicazione è avviata correttamente e in ascolto sulla porta di default 8080.

Creazione della prima API

Ora siamo pronti per creare la nostra prima API. Nella cartella dove si trova la classe main, crea un nuovo file chiamato DemoController. All’interno di questo file, inserisci il seguente codice:

@RestController
public class DemoController {
    @GetMapping
    public void demo() {
        System.out.println("Hello World");
    }
}

Riavvia l’applicazione e apri il browser all’indirizzo http://localhost:8080 . Vedrai “Hello World” stampato in console.

Aggiungere un Endpoint per risposte al Client

Poiché stiamo creando delle API da utilizzare con altre applicazioni, vogliamo inviare una risposta a un client. Aggiungiamo quindi un nuovo endpoint::

@GetMapping(value = "/test")
public ResponseEntity<String> test() {
    return ResponseEntity.ok("Hello World");
}

Visitando http://localhost:8080/test nel browser, vedrai la risposta “Hello World”.

ResponseEntity

La ResponseEntity è la classe di default di Spring per rappresentare una risposta HTTP. Grazie a ResponseEntity, la risposta include uno Status Code, degli Header e un Body.

Ricevere Dati con le API

Non sempre un’API serve a fornire dati; può anche riceverne. Aggiungiamo un endpoint che accetta un parametro dalla richiesta:

@GetMapping(value = "/test1")
public ResponseEntity<String> test1(@RequestParam("name") String name) {
    String message = "Hello" + " " + name + "!";
    return ResponseEntity.ok(message);
}

Ora, se apri http://localhost:8080/test1?name=John nel browser, vedrai “Hello John!”.

Per dati più complessi, è necessario usare il body della richiesta. Aggiungiamo un nuovo endpoint:

@PostMapping(value = "/test2")
public ResponseEntity<String> test2(@RequestBody String name) {
    String message = "Hello" + " " + name + "!";
    return ResponseEntity.ok(message);
}

Per testare questa API, usa il terminale:

curl --request POST --header "Content-Type: application/json" --data John http://localhost:8080/test2

Riceverai la risposta “Hello John!”.

Conclusione

In questa prima parte, abbiamo visto come inizializzare un progetto Spring per la creazione di un web service. Nella seconda parte, vedremo come interfacciare Spring con un database in modo da poter persistere i dati.

Il codice completo di questo esempio è disponibile a questo link.

Di admin

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *