Creazione di API RESTful con Java | Aulab

GUIDE PER ASPIRANTI PROGRAMMATORI

Creazione di API RESTful con Java

Cos’è un’API Le API, o Application Programming Interfaces, sono insiemi di regole che consentono a diversi software di interagire tra loro. Fungono da intermediari che permettono a due applicazioni di comunicare, inviando richieste e ricevendo risposte.   Immagina che tu voglia prenotare un volo tramite un’applicazione di viaggio sul tuo telefono. L’applicazione si connette all’API…

Lezione 40 / 47
Enza Neri
Immagine di copertina

Vuoi avviare una nuova carriera o fare un upgrade?

Trova il corso Digital & Tech più adatto a te nel nostro catalogo!

Cos’è un’API

Le API, o Application Programming Interfaces, sono insiemi di regole che consentono a diversi software di interagire tra loro. Fungono da intermediari che permettono a due applicazioni di comunicare, inviando richieste e ricevendo risposte.

Immagina che tu voglia prenotare un volo tramite un’applicazione di viaggio sul tuo telefono. L’applicazione si connette all’API della compagnia aerea, che funge da intermediario, per accedere alle informazioni sui voli disponibili. Quando inserisci le date e la destinazione, l’applicazione invia queste informazioni all’API, che poi interroga il database della compagnia aerea e restituisce i voli disponibili. L’applicazione di viaggio quindi mostra queste opzioni affinché tu possa scegliere e prenotare il volo desiderato.

Ecco alcuni esempi di API comuni:

  • API per i social media: le API fornite da piattaforme come Twitter, Facebook o Instagram permettono agli sviluppatori di creare applicazioni che possono postare aggiornamenti, accedere a feed di notizie, o analizzare le tendenze dei social media.
  • Google Maps API: questa API consente di integrare Google Maps in siti web o applicazioni, consentendo funzionalità come la ricerca di luoghi, la navigazione e l’integrazione di mappe personalizzate.
  • API di pagamento: piattaforme come PayPal o Stripe offrono API che facilitano l’integrazione di sistemi di pagamento sicuri nelle applicazioni, permettendo agli utenti di effettuare transazioni finanziarie online.
  • API del tempo: Servizi come OpenWeatherMap forniscono API che permettono di accedere a previsioni meteo, dati storici e informazioni climatiche da incorporare in altre applicazioni.


Le API possono essere pubbliche (aperte a tutti gli sviluppatori), private (limitate a specifici partner commerciali) o interne (utilizzate all’interno di un’organizzazione). Sono un componente essenziale per la costruzione di software moderni e connessi, permettendo l’interoperabilità e la creazione di ecosistemi di applicazioni che possono lavorare insieme.

Alcuni punti focali sull’uso delle API nello sviluppo:

  • Integrazione di servizi: Le API consentono agli sviluppatori di integrare facilmente funzionalità come pagamenti, mappe, comunicazioni in tempo reale, e altro, fornite da terze parti, nelle loro applicazioni.
  • Automazione: Le API possono essere usate per automatizzare processi. Ad esempio, una API può consentire a uno script di aggiornare automaticamente database o archivi quando si verificano determinati eventi.
  • Microservizi: Nell’architettura a microservizi, le API sono essenziali per consentire la comunicazione tra i diversi servizi che compongono un’applicazione, mantenendo un accoppiamento leggero e una coesione elevata.
  • Sviluppo Web: Le API RESTful sono uno standard de facto per il web e sono utilizzate per costruire interazioni tra client web e server in modo semplice e standardizzato.

Come creare un API RESTful con Java

La creazione di una semplice API RESTful nel linguaggio Java si svolge generalmente attraverso l’utilizzo di framework che facilitano lo sviluppo di servizi web, come Spring Boot o Jersey. Questi framework seguono il principio REST (Representational State Transfer), che è un tipo di architettura software per sistemi ipertestuali distribuiti come il World Wide Web. Vediamo come creare un’API RESTful utilizzando Spring Boot.

1) Crea un nuovo progetto Spring Boot

  • Utilizza Spring Initializr per generare e scaricare un progetto base.
  • Scegli Maven come sistema di build e aggiungi le dipendenze Spring Web e Spring Data JPA.
  • Estrai il progetto scaricato e aprilo nel tuo IDE.
  • Utilizza Spring Initializr per generare un progetto con le seguenti dipendenze: Spring Web, Spring Data JPA, H2 Database.

screenshot java inizializr

  • Clicca su “add dependencies

screenshot guida java2

  • Clicca su “”Spring web” e, infine, generate

screenshot eclipse 2

  • Su eclipse clicca su import

import eclipse

  • A questo punto clicca su “existing Maven Projects”.
  • Importa, ora, il file che hai generato dopo averlo estratto dal rar. chiamato springboot-first-app

screenshot import maven

  • Fai click sul pulsante Finish

screenshot package explorer

  • Segui il percorso springboot-fist-app/src/main/java/com/springboot/app e avvia la classe che chiameremo WelcomeController

2) Sviluppa il controller RESTful

  • Crea una classe annotata con @RestController.
  • Definisci metodi con annotazioni come @GetMapping, @PostMapping, @PutMapping, e @DeleteMapping per gestire le varie richieste HTTP.
  • Inietta il repository nel controller per interagire con il database.

Ricordiamo che:

  • @RestController: Indica che una classe è un “Controller REST”, una componente centrale in un’applicazione Spring Boot per gestire le richieste HTTP. Fa in modo che i dati restituiti dai metodi del controller siano scritti direttamente nel corpo della risposta HTTP, anziché restituire una vista.
  • @GetMapping: Utilizzata per mappare le richieste HTTP GET su specifici metodi del controller. Comunemente usata per recuperare dati dal server.
  • @PostMapping: Utilizzata per mappare le richieste HTTP POST su specifici metodi del controller. Tipicamente usata per inviare dati al server per creare una nuova risorsa (ad esempio, un nuovo record in un database).
  • @PutMapping: Utilizzata per mappare le richieste HTTP PUT su specifici metodi del controller. Solitamente usata per aggiornare dati esistenti sul server.
  • @DeleteMapping: Utilizzata per mappare le richieste HTTP DELETE su specifici metodi del controller. Usata per eliminare risorse dal server.
// Definisce il pacchetto in cui si trova questa classe. 
// È una pratica standard in Java per organizzare il codice in modo logico e gestibile.
package com.springboot.springbootfirstapp;

// Importazioni necessarie dalle librerie di Spring Framework.
// Queste dichiarazioni permettono di utilizzare le classi e le annotazioni fornite da Spring senza dover specificare il loro percorso completo.
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

// Annotazione @RestController
// Indica che questa classe è un controller Spring, specificamente un controller REST.
// Questa annotazione fa sì che le risposte dei metodi siano direttamente mappate al corpo della risposta HTTP, senza dover utilizzare @ResponseBody.
@RestController
public class WelcomeController {

    // Annotazione @GetMapping
    // Specifica che il metodo sottostante gestirà le richieste GET inviate all'URL "/welcome".
    // Questo è un esempio di mappatura di endpoint REST in Spring Boot.
    @GetMapping("/welcome")
    public String welcome() {
        // Il corpo del metodo
        // Quando questo endpoint viene chiamato, restituisce semplicemente una stringa.
        // In un'applicazione reale, qui potresti avere logiche più complesse, come interrogare un database o chiamare altri servizi.
        return "Welcome to the Spring Boot app";
    }
}

Quando eseguirai la tua applicazione Spring Boot, Spring Framework configurerà automaticamente un server web e mappa gli endpoint definiti nei tuoi controller. In questo caso, se il server viene eseguito in locale sulla porta predefinita (8080), puoi accedere a questo endpoint visitando http://localhost:8080/welcome in un browser o utilizzando un client HTTP come Postman. Riceverai una risposta che contiene il testo “Welcome to the Spring Boot app”.

3) Testa il risultato!

Il risultato che otterrai sarà:


screenshot springboot

Questo esempio basilare è solo l’inizio. Partendo da qui, puoi esplorare funzionalità più avanzate e realizzare applicazioni web complete. Ad esempio:

  • Gestione completa del CRUD: utilizzando annotazioni come @PostMapping, @PutMapping, e @DeleteMapping, puoi creare un’API che supporta operazioni complete di CRUD (Create, Read, Update, Delete) su entità del database.
  • Validazione dei dati: implementare la validazione dei dati in ingresso nelle tue API, garantendo che le informazioni ricevute siano corrette e complete prima di procedere con l’elaborazione o l’aggiornamento del database.
  • Autenticazione e autorizzazione: integrare meccanismi di sicurezza come JWT (JSON Web Tokens) o OAuth per gestire l’autenticazione e l’autorizzazione degli utenti, assicurando che solo gli utenti autorizzati possano accedere a determinate funzionalità dell’API.
  • Interazione con database: collegare il tuo controller a un database utilizzando Spring Data JPA o altri strumenti ORM (Object-Relational Mapping), permettendo un’interazione sofisticata e efficiente con il database.
  • Integrazione con Servizi Esterni: chiamare e integrare servizi web esterni, come API di terze parti, per arricchire le funzionalità della tua applicazione.

Sei indeciso sul percorso? 💭

Parliamone! Scrivici su Whatsapp e risponderemo a tutte le tue domande per capire quale dei nostri corsi è il più adatto alle tue esigenze.

Oppure chiamaci al 800 128 626