Payload API: qu'est-ce que c'est, que contient-elle et quel est son rôle dans la communication entre le client et le serveur?
Lorsqu’un client et un serveur communiquent via API, le premier envoie une requête au second, qui traite la requête et renvoie une charge utile contenant le résultat de l’opération, qui peut concerner la création d’un nouvel utilisateur autant que l’extraction d’informations depuis une base de données.
La charge utile, ou «payload» de l’interaction, est cette partie de la communication qui contient les données à transmettre, par exemple le nom d’utilisateur et l’adresse e-mail à associer à un nouveau compte ou le résumé de l’opération effectuée.
Lors de la transmission de données, le payload est la portion du message qui contient les données à transmettre, littéralement la « charge utile » de l’échange d’informations entre client et serveur.
Lorsque le client envoie une requête, il transmet un paquet de données qui inclut plusieurs instructions nécessaires au fonctionnement du protocole de communication, comme les métadonnées et les en-têtes, qui transportent des informations telles que le type de contenu ou d’éventuels messages d’erreur. Le payload se trouve à l’intérieur du même paquet et contient les données réelles à transmettre.
Dans une requête, par exemple, le payload peut contenir les données d’un utilisateur qui se connecte ou la requête dans un appel API, tandis que dans une réponse, il peut contenir le résultat de l’opération ou les données demandées.
Le contenu du payload dépend essentiellement du contexte: dans le traitement des paiements, il peut inclure des identifiants, des détails de paiement et des métadonnées liées à la transaction; sur les réseaux sociaux, il peut transmettre des fichiers multimédias ; dans les systèmes de réservation, il peut transporter des informations comme les disponibilités et les tarifs.
Le payload est donc le message réellement transmis entre le client et le serveur. Il peut s’agir d’une image, d’un PDF ou d’une liste de noms. Dans les interactions impliquant la transmission de métadonnées, il s’agit presque toujours d’un objet au format Json ou XML, dont le contenu peut varier considérablement selon le type d’opération.
Par exemple, si nous créons un nouvel utilisateur, le payload de la requête doit contenir les données nécessaires à la création du compte (ex. : {"username": "nouvelutilisateur", "email": "[email protected]", "firstName": "Mario", "lastName": "Rossi"}), tandis que la réponse inclura des informations comme l’ID du nouvel utilisateur, ses données et un message du type « Compte créé avec succès » (ex. : {"id": "123", "username": "nouvelutilisateur", "email": "[email protected]", "message": "Compte créé avec succès"}).
Si nous récupérons des informations à partir d’une base de données, le payload de la requête correspondra à la requête spécifique (par exemple, {"query": {vatCode_or_taxCode_or_id}}), tandis que la réponse contiendra les données demandées, dans notre cas {"taxCode": "12485671007", "companyName": "OPENAPI SPA", "vatCode": "12485671007"}.
Dans les appels Rest API, le contenu du payload dépend également beaucoup de la méthode HTTP utilisée, qui définit l’action à effectuer sur la ressource sollicitée:
Les payloads transmis dans une interaction API, en particulier les payloads de réponse, contiennent beaucoup plus que les seules données demandées. Ils incluent des informations essentielles pour la gestion de l’interaction par le client, telles que le statut de succès (par exemple, “success”: true) et d’éventuels messages textuels (par exemple, “message”: “mot de passe invalide”).
Les payloads de l’API Openapi utilisent le standard Json. Dans les requêtes API, ils contiennent les informations de la requête, par exemple l’expéditeur, le destinataire et le contenu d’un SMS.
Dans les réponses API Openapi, les payloads contiennent 4 champs:
Le payload, comme nous l’avons vu, est le contrat fondamental entre client et serveur, l’élément qui définit l’intention (request) et le résultat (response) de l’interaction. Par conséquent, sa structure peut influencer fortement l’efficacité et l’évolutivité d’une architecture API. Une structure stricte et cohérente des payloads est donc indispensable pour garantir l’interopérabilité et la facilité d’intégration, mais aussi pour assurer des processus efficaces et facilement maintenables.