4.8. Définir le contenu du message
4.8. Définir le contenu du message
Les applications utilisant HTTP DOIVENT spécifier le format du contenu des requêtes et des réponses, généralement en définissant un ou plusieurs types de médias [RFC6838]. Ce faisant, elles DEVRAIENT enregistrer ces types de médias en suivant les procédures de [RFC6838].
Les formats courants incluent:
-
JSON [JSON]
-
XML [XML]
-
CBOR [RFC8949]
-
Protocol Buffers
-
Formats personnalisés spécifiques à l'application
Lors de la spécification du contenu, les applications DEVRAIENT:
-
Utiliser des types de médias existants et largement compris lorsque cela est possible (par exemple,
application/jsonpour le contenu JSON). -
Définir de nouveaux types de médias si nécessaire, en utilisant l'arbre approprié (par exemple,
application/vnd.example.myapp+jsonpour un format spécifique au fournisseur basé sur JSON). -
Spécifier clairement la structure et la sémantique du contenu.
-
Envisager de prendre en charge plusieurs représentations de la même ressource, en utilisant la négociation de contenu (voir [HTTP] Section 12).
-
Utiliser le champ d'en-tête
Content-Typepour indiquer le type de média du contenu envoyé. -
Utiliser le champ d'en-tête
Acceptpour indiquer les types de médias que le client est prêt à recevoir.
Les applications DEVRAIENT prendre en charge la négociation de contenu pour permettre aux clients et aux serveurs de s'accorder sur la représentation d'une ressource. Cela se fait en utilisant le champ d'en-tête Accept dans les requêtes et le champ d'en-tête Content-Type dans les réponses.
Par exemple, un client pourrait envoyer:
Accept: application/json, application/xml;q=0.9
indiquant qu'il préfère JSON mais acceptera XML avec une préférence légèrement inférieure.
Le serveur peut alors répondre avec la représentation la plus appropriée en fonction de ce qu'il peut fournir et des préférences du client.