Références Sémantiques HTTP
Redirections
- 307 Temporary Redirect — Préserve la méthode et le corps (MDN, RFC 9110 §15.4.8)
- 308 Permanent Redirect — Préserve la méthode et le corps (MDN, RFC 9110 §15.4.9)
- 303 See Other — Convertit en GET (opt-in via
follow303) (MDN, RFC 9110 §15.4.4)
ts
redirectPolicy({ allow: [307, 308], follow303: false });Limitation de Débit (Rate Limiting)
- 429 Too Many Requests +
Retry-After(MDN, RFC 6585) - 503 Service Unavailable +
Retry-After(MDN, RFC 9110 §15.6.4)
ts
import { retry } from '@unireq/core';
import { httpRetryPredicate, rateLimitDelay } from '@unireq/http';
retry(
httpRetryPredicate({ statusCodes: [429, 503] }),
[rateLimitDelay({ maxWait: 60000 })],
{ tries: 3 }
);Requêtes de Plage (Range Requests)
- 206 Partial Content — Le serveur envoie la plage d'octets demandée (MDN, RFC 7233)
- 416 Range Not Satisfiable — Plage invalide (MDN, RFC 7233 §4.4)
Accept-Ranges: bytes— Le serveur supporte les plages (MDN)
ts
range({ start: 0, end: 1023 }); // Demande le premier 1KB
resume({ downloaded: 5000 }); // Reprend à l'octet 5000Multipart Form Data
- RFC 7578 —
multipart/form-data(spec)
ts
multipart(
[{ name: 'file', filename: 'doc.pdf', data: blob, contentType: 'application/pdf' }],
[{ name: 'title', value: 'My Document' }]
);OAuth 2.0 Bearer
- RFC 6750 — Utilisation du token Bearer (spec)
ts
oauthBearer({
tokenSupplier: async () => getAccessToken(),
skew: 60, // Tolérance de décalage d'horloge (secondes)
autoRefresh: true // Rafraîchit sur 401
});