Je comprends que le paramètre Accept
définit un type de données attendu dans une réponse client envoyée par le serveur. Il est donc utilisé comme en-tête de réponse.
Ma question concerne le Content-type
, il est utilisé par un client pour définir le format du corps d'une demande envoyée. Je l'ai toujours utilisé dans le cadre d'une demande client. J'ai donc une demande du client dans laquelle j'ai défini les en-têtes avec Accept
et Content-type
. Et récemment, je suis tombé sur un projet où le Content-type
est défini dans les en-têtes de réponse (donc envoyé par le serveur). Ma question est donc la suivante: Content-type
doit être défini dans l’en-tête de la demande du client ou dans l’en-tête de la réponse du serveur ou peut-il être défini sur les deux?
Lisez les RFC pertinents. Dans ce cas 7231 :
Le champ d’en-tête "Accept" peut être utilisé par les agents utilisateurs pour spécifier response types de support acceptables.
Le champ d’en-tête "Content-Type" indique le type de support du fichier représentation associée
Donc: Accept
indique quel type de réponse du serveur le client peut accepter. Content-type
concerne toujours le contenu de la demande ou de la réponse actuelle.
Ainsi, si votre demande n'a pas de charge utile, vous n'utilisez pas d'en-tête de demande de type de contenu.
En-tête Accept est utilisé par les clients HTTP pour indiquer au serveur le type de contenu qu’ils attendent/préfèrent comme réponse. Content-type peut être utilisé à la fois par les clients et les serveurs pour identifier le format des données dans leur demande (client) ou leur réponse (serveur) et ainsi aider l'autre partie à interpréter correctement les informations.
TL; DR
L'en-tête d'entité Content-Type
est utilisé pour indiquer le type de support de la ressource. Dans les réponses, un en-tête Content-Type
indique au client le type de contenu du contenu renvoyé. Dans les demandes, telles que POST ou PUT, le client indique au serveur quel type de données est réellement envoyé.
Réponse élaborée
Comme vous l'avez noté correctement, l'en-tête Accept
est utilisé par les clients HTTP pour indiquer au serveur quels types de média de réponse sont acceptables. Le serveur, à son tour, renverra ensuite une réponse, qui comprendra l'en-tête Content-Type
indiquant au client le type de média effectivement renvoyé.
Maintenant, l'en-tête Content-Type
pourrait être sur demande et les réponses également. Pourquoi? Eh bien, pensez aux demandes POST ou PUT. Avec ces types de requête, le client envoie en réalité un ensemble de données au serveur dans le cadre de la requête, et l'en-tête Content-Type
indique au serveur la nature des données et détermine ainsi la manière dont le serveur les analysera.