API payload: cos’è, cosa contiene e il suo ruolo all’interno della comunicazione tra client e server
Quando un client e un server comunicano tramite API, il primo invia una richiesta al secondo, che elabora la richiesta e restituisce un payload contenente il risultato dell'operazione, che può riguardare la creazione di un nuovo utente tanto quanto l’estrazione di informazioni da un database.
Il payload, o “carico utile” dell’interazione, è quella parte della comunicazione che contiene i dati da trasmettere, per esempio il nome utente e l’indirizzo email da associare a un nuovo account o il riepilogo dell’operazione effettuata.
Nella trasmissione di dati, il payload è la porzione di messaggio che contiene i dati da trasmettere, letteralmente il “carico utile” dello scambio di informazioni tra client e server.
Quando un client invia una richiesta, trasmette un pacchetto di dati che include diverse istruzioni necessarie a far funzionare il protocollo di comunicazione, come metadati e header, che trasportano informazioni come il tipo di contenuto o eventuali messaggi di errore. Il payload si trova all’interno dello stesso pacchetto, ed è quello che contiene i dati effettivi da trasmettere.
In una richiesta, per esempio, il payload può contenere i dati di un utente che effettua il login oppure la query in una chiamata API, mentre in una risposta può contenere il risultato dell’operazione o i dati richiesti.
Il contenuto del payload dipende essenzialmente dal contesto: nell’elaborazione dei pagamenti può includere credenziali, dettagli di pagamento e metadati relativi alla transazione, nei social network può trasmettere file multimediali, nei sistemi di prenotazione può trasportare informazioni come disponibilità e prezzi.
Il payload, quindi, è il messaggio che viene effettivamente trasmesso tra client e server. Può essere un’immagine, un PDF o una lista di nomi. Nelle interazioni che prevedono la trasmissione di metadati, si tratta quasi sempre di un oggetto in formato Json o XML, il cui contenuto può variare notevolmente in base al tipo di operazione.
Se per esempio stiamo creando un nuovo utente, il payload di richiesta dovrà contenere i dati necessari alla creazione del nuovo account (es.: {"username": "nuovoutente", "email": “[email protected]", "firstName": "Mario", "lastName": "Rossi"}), mentre quello della risposta includerà informazioni come l’ID del nuovo utente, i suoi dati e un messaggio del tipo “Account creato con successo" (es.: {"id": "123", "username": "nuovoutente", "email": "[email protected]", "message": "Account creato con successo"}).
Se stiamo invece recuperando informazioni da un database, il payload della richiesta coinciderà con la query specifica (per esempio, {"query": {vatCode_or_taxCode_or_id}), mentre la risposta conterrà i dati richiesti, nel nostro caso {"taxCode": "12485671007", "companyName": OPENAPI SPA", "vatCode": "12485671007"}.
Nelle chiamate API Rest, il contenuto del payload dipende molto anche dal metodo HTTP utilizzato, che definisce l’azione da eseguire sulla risorsa interpellata:
I payload trasmessi in un’interazione via API, soprattutto quelli delle risposte (API Responses), contengono molto di più dei semplici dati richiesti. Includono informazioni essenziali per la gestione dell'interazione da parte del client, come lo stato di successo (per esempio, “success”: true) ed eventuali messaggi testuali (per esempio, “message”: “password non valida”).
I payload delle API di Openapi adottano lo standard Json. Nelle richieste API, contengono l’informazione della richiesta, per esempio mittente, destinatario e contenuto di un SMS.
Nelle API responses di OpenAPI, invece, i payload contengono 4 campi:
Il payload, abbiamo visto, è il contratto fondamentale tra client e server, l'elemento che definisce l'intento (request) e il risultato (response) dell’interazione. Perciò la sua struttura può influenzare notevolmente l’efficienza e la scalabilità di un’architettura API. Una struttura rigorosa e coerente dei payload è quindi indispensabile per garantire interoperabilità e facilità di integrazione, ma anche per assicurare processi efficienti e di facile manutenzione.