Panoramica
REST e SOAP sono due diversi approcci alla trasmissione dei dati online. Nello specifico, entrambi definiscono come creare interfacce di programmazione delle applicazioni (API) che consentono la comunicazione dei dati tra applicazioni web. L'approccio REST (REpresentational State Transfer) è un insieme di principi architettonici, mentre l'approccio SOAP (Simple object access protocol) è un protocollo ufficiale gestito dal W3C (World Wide Web Consortium). La differenza sostanziale risiede nel fatto che SOAP è un protocollo, mentre REST non lo è. Un'API in genere adotta o un approccio o l'altro, a seconda dell'esempio di utilizzo e delle preferenze dello sviluppatore.
REST= Representational State Transfer
REST è un insieme di principi architettonici incentrati sulle esigenze di ottimizzazione di servizi web e applicazioni mobili. Trattandosi sostanzialmente di linee guida o raccomandazioni, la loro implementazione è lasciata agli sviluppatori.
In genere, una richiesta di dati inviata a un'API REST avviene tramite il protocollo HTTP. Una volta ricevuta la richiesta, le API progettate per REST (chiamate API o servizi web RESTful) possono restituire i messaggi in numerosi formati: HTML, XML, testo semplice e JSON. JSON (JavaScript Object Notation) è il formato di messaggistica più adottato, perché, a dispetto del nome, può essere letto da qualsiasi linguaggio di programmazione, dagli utenti e dalle macchine, ed è ottimizzato. In questo modo le API RESTful sono più flessibili e configurabili con facilità.
Un'applicazione viene definita RESTful se rispetta sei principi architetturali, disponendo di:
- Un'architettura client server costituita da client, server e risorse.
- Una comunicazione client server stateless, in cui nessun contenuto client viene archiviato sul server tra le richieste. Le informazioni relative allo stato della sessione si trovano inoltre sul client.
- Caching dei dati, per eliminare la necessità di alcune interazioni client server.
- Un'interfaccia uniforme per i componenti, in modo che le informazioni vengano trasferite in una forma standard e non specifica alle esigenze di un'applicazione. Roy Fielding, creatore di REST, la definisce come "la caratteristica di base che distingue lo stile architettonico REST da altri stili basati sulla rete".
- Un sistema di vincoli a più livelli, in cui le interazioni client server possono essere mediate da livelli gerarchici.
- Codice on demand, per consentire ai server di estendere la funzionalità di un client trasferendo il codice eseguibile. Poiché ciò riduce anche la visibilità, questa raccomandazione è facoltativa.
SOAP = Simple Object Access Protocol
SOAP è un protocollo standard ideato inizialmente per consentire la comunicazione tra applicazioni realizzate con linguaggi e piattaforme diverse. Trattandosi di un protocollo, richiede l'integrazione di regole che ne aumentano la complessità e il carico di gestione sul sistema, comportando tempi di caricamento delle pagine più lunghi. Oltre alle regole, integra anche standard di conformità che lo rendono idoneo agli ambienti enterprise. Gli standard di conformità integrati includono sicurezza, atomicità, coerenza, isolamento e durata (ACID), un insieme di proprietà che garantiscono transazioni di database affidabili.
Le specifiche più comuni dei servizi web includono:
- Web Services Security (WS-security): uniforma le modalità di protezione e trasferimento dei messaggi tramite identificatori univoci chiamati token.
- WS-ReliableMessaging: standardizza la gestione degli errori tra messaggi trasferiti tra infrastrutture IT non affidabili.
- WS-addressing: crea pacchetti di informazioni di routing in forma di metadati all'interno delle intestazioni SOAP, anziché gestire tali informazioni a un livello di maggiore granularità nella rete.
- Web Services Description Language (WSDL): descrive il comportamento di un servizio web, dove inizia e dove termina.
Una richiesta di dati inviata a un'API SOAP può essere gestita tramite uno dei protocolli a livello applicativo: HTTP (per i browser web), SMTP (per l'email), TCP e altri. Una volta ricevuta la richiesta, i messaggi SOAP di ritorno devono essere restituiti come documenti in formato XML, un linguaggio di markup facilmente leggibile da utenti e macchine. Una richiesta completata a un'API SOAP non viene memorizzata nella cache del browser, e pertanto non sarà possibile accedervi successivamente senza rinviarla all'API.
API SOAP e REST
Molti sistemi esistenti aderiscono ancora a SOAP, mentre REST, il cui avvento è successivo, è spesso considerato come un'alternativa più rapida negli scenari web. REST è un insieme di linee guida con un'implementazione flessibile, mentre SOAP è un protocollo con requisiti specifici, come la messaggistica XML.
Poiché sono ottimizzate, le API REST sono adatte ai contesti più innovativi come l'Internet of Things (IoT), lo sviluppo di applicazioni mobili e il serverless computing. Grazie all'integrazione della sicurezza e della conformità delle transazioni, i servizi web SOAP rispondono a molte esigenze aziendali, ma risultano anche più complessi. Infine, molte API pubbliche, come l'API di Google Maps, seguono i principi REST.
Le soluzioni API di Red Hat
Red Hat offre soluzioni API complete, ottimizzate e modulari, che sono basate sull'open source, sugli standard open e adatte a un'infrastruttura on premise o nel cloud. Possono esserti di grande aiuto nel rendere i tuoi processi IT più flessibili ed efficienti.
UPS si affida a Red Hat per ottimizzare i servizi di tracking e distribuzione
UPS, tra le aziende leader nel settore della logistica, si è affidata a Red Hat e ad un approccio DevOps per migliorare i propri servizi. Scopri come.