Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

En-tête Prefer

L'en-tête HTTP Prefer permet aux client·e·s d'indiquer des préférences pour des comportements spécifiques du serveur lors du traitement d'une requête.

Note : Les navigateurs ne gèrent pas les en-têtes Prefer et Preference-Applied : ils sont utilisés dans des clients personnalisés, spécifiques à l'implémentation. Assurez-vous que le client et le serveur prennent en charge cet en-tête avant de l'utiliser en production.

Les serveurs doivent ignorer silencieusement les préférences qu'ils ne prennent pas en charge, comme si l'en-tête n'était pas présent.

Type d'en-tête En-tête de requête
En-tête de requête interdit Non

Syntaxe

http
Prefer: <preference>, <preference>, ...

Directives

respond-async

Le client préfère un traitement asynchrone. Par exemple, le serveur peut répondre avec 202 Accepted indiquant que la requête a été acceptée, accompagné de l'en-tête Location contenant une URL que le client peut utiliser pour suivre l'état du traitement.

return=minimal

Demande au serveur de retourner un contenu minimal (une réponse contenant uniquement les en-têtes).

return=representation

Demande une représentation complète de la ressource dans la réponse.

wait=<seconds>

Le temps dans lequel le client attend que le serveur fournisse une réponse, à partir du moment où la requête a été reçue. Si la préférence respond-async est également fournie, le serveur doit répondre de façon asynchrone si le traitement dépasse le temps d'attente. Sinon, le serveur doit considérer que le client abandonnera après le temps indiqué (le comportement dépend de l'implémentation du serveur).

handling=lenient

Le client souhaite que le serveur applique une validation et une gestion des erreurs souples lors du traitement de la requête.

handling=strict

Le client souhaite que le serveur applique une validation et une gestion des erreurs strictes lors du traitement de la requête.

Préférence personnalisée

Les fournisseurs ou applications peuvent définir leurs propres préférences selon leurs besoins. Par exemple : Prefer: timezone=America/Los_Angeles.

Exemples

Demander une réponse minimale

La requête suivante demande une réponse minimale. Il s'agit généralement d'une réponse contenant uniquement les en-têtes (par opposition à return=representation où une représentation est incluse dans le corps de la réponse) :

http
POST /resource HTTP/1.1
Host: exemple.com
Content-Type: application/json
Prefer: return=minimal

{"id":123, "name": "abc"}

Le serveur répond avec 201, mais n'inclut aucun corps de réponse. L'en-tête Location contient une URL indiquant l'emplacement de la ressource nouvellement créée. Il n'est pas nécessaire d'inclure un en-tête Preference-Applied car l'absence de corps de réponse est évidente :

http
HTTP/1.1 201 Created
Location: /resource?id=123

Demander un traitement asynchrone

Cet exemple demande au serveur de démarrer une tâche de traitement asynchrone :

http
POST /process HTTP/1.1
Host: exemple.com
Prefer: respond-async

{
  "task": "check-broken-links"
}

Le serveur répond avec 202 Accepted indiquant que la requête a été acceptée et n'a pas encore été exécutée de façon asynchrone. Un en-tête Location pointe vers un moniteur de statut représentant l'état du traitement :

http
HTTP/1.1 202 Accepted
Location: http://exemple.com/tasks/123/status

Fournir plusieurs préférences

La requête suivante inclut deux préférences ; timezone=Jupiter/Red_Spot indique une préférence de fuseau horaire pour le client, et handling=strict pour strict validation :

http
GET /events HTTP/1.1
Host: exemple.com
Prefer: handling=strict, timezone=Jupiter/Red_Spot

Dans cette implémentation, un fuseau horaire invalide provoquera une erreur :

http
HTTP/1.1 400 Bad Request

Spécifications

Specification
Prefer Header for HTTP
# section-2

Voir aussi