Annexe C. Exemples de digest sollicité avec Want-Repr-Digest
The following examples demonstrate interactions where a client solicits a Repr-Digest using Want-Repr-Digest. The behavior of Content-Digest and Want-Content-Digest is identical.
Les exemples suivants démontrent des interactions où un client sollicite un Repr-Digest en utilisant Want-Repr-Digest. Le comportement de Content-Digest et Want-Content-Digest est identique.
Some examples include JSON objects in the content. For presentation purposes, objects that fit completely within the line-length limits are presented on a single line using compact notation with no leading space. Objects that would exceed line-length limits are presented across multiple lines (one line per key-value pair) with two spaces of leading indentation.
Certains exemples incluent des objets JSON dans le contenu. À des fins de présentation, les objets qui tiennent complètement dans les limites de longueur de ligne sont présentés sur une seule ligne en utilisant une notation compacte sans espace de début. Les objets qui dépasseraient les limites de longueur de ligne sont présentés sur plusieurs lignes (une ligne par paire clé-valeur) avec deux espaces d'indentation.
Checksum mechanisms described in this document are media-type agnostic and do not provide canonicalization algorithms for specific formats. Examples are calculated inclusive of any space.
Les mécanismes de somme de contrôle décrits dans ce document sont agnostiques au type de média et ne fournissent pas d'algorithmes de canonisation pour des formats spécifiques. Les exemples sont calculés en incluant tout espace.
C.1. Le serveur sélectionne l'algorithme le moins préféré du client
The client requests a digest and prefers "sha". The server is free to reply with "sha-256" anyway.
Le client demande un digest et préfère "sha". Le serveur est libre de répondre avec "sha-256" de toute façon.
GET /items/123 HTTP/1.1
Host: foo.example
Want-Repr-Digest: sha-256=3, sha=10
Figure 31: GET Request with Want-Repr-Digest
Figure 31 : Requête GET avec Want-Repr-Digest
NOTE: '' line wrapping per RFC 8792
HTTP/1.1 200 OK
Content-Type: application/json
Repr-Digest: \
sha-256=:RK/0qy18MlBSVnWgjwz6lZEWjP/lF5HF9bvEF8FabDg==:
{"hello": "world"}
Figure 32: Response with Different Algorithm
Figure 32 : Réponse avec un algorithme différent
C.2. Le serveur sélectionne un algorithme non pris en charge par le client
The client requests a "sha" digest because that is the only algorithm it supports. The server is not obliged to produce a response containing a "sha" digest; it instead uses a different algorithm.
Le client demande un digest "sha" car c'est le seul algorithme qu'il prend en charge. Le serveur n'est pas obligé de produire une réponse contenant un digest "sha" ; il utilise plutôt un algorithme différent.
GET /items/123 HTTP/1.1
Host: foo.example
Want-Repr-Digest: sha=10
Figure 33: GET Request with Want-Repr-Digest
Figure 33 : Requête GET avec Want-Repr-Digest
NOTE: '' line wrapping per RFC 8792
HTTP/1.1 200 OK
Content-Type: application/json
Repr-Digest: \
sha-512=:YMAam51Jz/jOATT6/zvHrLVgOYTGFy1d6GJiOHTohq4yP+pgk4vf2aCs\
yRZOtw8MjkM7iw7yZ/WkppmM44T3qg==:
{"hello": "world"}
Figure 34: Response with Unsupported Algorithm
Figure 34 : Réponse avec un algorithme non pris en charge
C.3. Le serveur ne prend pas en charge l'algorithme du client et renvoie une erreur
Appendix C.2 is an example where a server ignores the client's preferred digest algorithm. Alternatively, a server can also reject the request and return a response with an error status code such as 4xx or 5xx. This specification does not prescribe any requirement on status code selection; the following example illustrates one possible option.
L'annexe C.2 est un exemple où un serveur ignore l'algorithme de digest préféré du client. Alternativement, un serveur peut également rejeter la demande et renvoyer une réponse avec un code d'état d'erreur tel que 4xx ou 5xx. Cette spécification ne prescrit aucune exigence sur la sélection du code d'état ; l'exemple suivant illustre une option possible.
In this example, the client requests a "sha" Repr-Digest, and the server returns an error with problem details [RFC9457] contained in the content. The problem details contain a list of the hashing algorithms that the server supports. This is purely an example; this specification does not define any format or requirements for such content.
Dans cet exemple, le client demande un Repr-Digest "sha", et le serveur renvoie une erreur avec les détails du problème [RFC9457] contenus dans le contenu. Les détails du problème contiennent une liste des algorithmes de hachage que le serveur prend en charge. Ceci n'est qu'un exemple ; cette spécification ne définit aucun format ou exigence pour un tel contenu.
GET /items/123 HTTP/1.1
Host: foo.example
Want-Repr-Digest: sha=10
Figure 35: GET Request with Want-Repr-Digest
Figure 35 : Requête GET avec Want-Repr-Digest
HTTP/1.1 400 Bad Request
Content-Type: application/problem+json
{
"title": "Bad Request",
"detail": "Supported hashing algorithms: sha-256, sha-512",
"status": 400
}
Figure 36: Response Advertising the Supported Algorithms
Figure 36 : Réponse annonçant les algorithmes pris en charge