api Programmazione

Consumare API REST in Delphi con RESTRequest4Delphi

calendar_today personTeam EGSOFT schedule5 min di lettura

Perché non solo i componenti REST nativi

Delphi include da diverse versioni un set di componenti nativi per il consumo di API REST (TRESTClient, TRESTRequest, TRESTResponse), disponibili anche visualmente nella palette dei componenti. Funzionano bene per casi semplici, ma in progetti più strutturati l'approccio a componenti visuali, legati al form tramite il file .dfm, rende più complesso scrivere test automatici e riutilizzare la stessa logica di chiamata in contesti diversi (un servizio Windows, un'applicazione console, un altro form). Per questo molti team Delphi preferiscono una libreria come RESTRequest4Delphi, pensata per un uso fluente e completamente da codice.

Un'interfaccia fluente per costruire le richieste

RESTRequest4Delphi espone un'interfaccia a catena di chiamate (fluent interface) che rende la costruzione di una richiesta HTTP leggibile in poche righe: si specifica il metodo (GET, POST, PUT, DELETE), l'URL base e l'endpoint, eventuali header e parametri, il corpo della richiesta se previsto, e si esegue la chiamata con un singolo metodo finale che restituisce la risposta. Non essendo legata a un componente visuale, può essere usata identica in un modulo dati, in una classe di servizio separata o in un test automatico, senza dipendere da un form aperto.

Gestire risposte JSON in modo tipizzato

Un vantaggio pratico della libreria è la possibilità di mappare direttamente la risposta JSON su un oggetto Delphi tipizzato (tramite serializzazione/deserializzazione automatica), evitando di dover navigare manualmente la struttura di un TJSONObject campo per campo. Questo riduce sensibilmente il codice ripetitivo quando si consumano più endpoint della stessa API, e rende gli errori di battitura su un nome di campo visibili a compile-time invece che a runtime.

Gestione degli errori HTTP

Una buona integrazione REST deve distinguere tra un errore di rete (server irraggiungibile, timeout) e una risposta HTTP di errore restituita correttamente dal server (404, 401, 500): la libreria espone lo status code e il corpo della risposta anche in caso di errore, permettendo di gestire in modo differenziato un "risorsa non trovata" rispetto a un problema di connettività, invece di trattare ogni fallimento allo stesso modo con un generico messaggio "errore di comunicazione".

Un esempio concettuale del flusso

Nella pratica, il flusso tipico è: creare l'istanza del client REST puntando all'URL base dell'API, configurare eventuali header di autenticazione (un token Bearer, una API key), costruire la richiesta specificando risorsa e metodo, eseguirla, e infine verificare lo status code della risposta prima di elaborarne il contenuto. Isolando questa logica in una classe dedicata (ad esempio TServizioMeteoApi), il resto dell'applicazione dialoga con l'API attraverso metodi con nomi di dominio (OttieniPrevisioni), senza conoscere i dettagli HTTP sottostanti — un buon esempio di separazione delle responsabilità che semplifica sia i test che la manutenzione futura.

apiAltri articoli su Programmazione grid_viewTutti gli articoli
Scrivici su WhatsApp