@eqs/platform-next : withApi — borne de corps par route, réponses binaires et redirections, corps facultatif publié requis #147

Closed
opened 2026-10-12 12:29:09 +00:00 by nicolas-fryder · 0 comments

Trois manques de déclaration rencontrés en convertissant les 160 handlers d'ATLAS.

1. Borne de corps par route

Commande : withApi(h, { body, bodyLimit: 8_000_000 }), ou lire un corps non JSON (CSV, formulaire) borné.
Attendu : la borne de la route, et une lecture bornée publique pour un corps non JSON.
Observé : la borne est celle de l'instance (1 Mo) ; aucune option par route. Le jeu (1 Ko) et les signalements (10 Ko) sont donc remontés à 1 Mo, l'outil du hub de 64 Ko à 1 Mo ; l'import de captures (CSV de 8 Mo) relit lui-même le corps (lireOctetsBornes).

2. Réponse binaire ou redirection

Commande : withApi(h, { status: 302 }), ou un handler qui rend image/png / application/vnd…docx / un flux SSE.
Attendu : response: { contentType } (ou équivalent) et un statut 3xx déclarable.
Observé : le contrat publie un application/json {} générique pour les tuiles, images, documents et flux ; reponsesDocumentees compte un écart par 302 (deux chez ATLAS : auth/hq/start, oauth/authorize).

3. Corps facultatif publié requis

Commande : exporter body: z.object({…}).optional() (POST /api/ingest/communes chez ATLAS).
Attendu : requestBody.required: false.
Observé : true — un client généré exigera un corps que la route n'exige pas.

Versions

@eqs/platform-next 0.20.0.

Ouvert depuis le rejeu du rétrofit d'ATLAS (étape 7).

Trois manques de déclaration rencontrés en convertissant les 160 handlers d'ATLAS. ## 1. Borne de corps par route **Commande** : `withApi(h, { body, bodyLimit: 8_000_000 })`, ou lire un corps non JSON (CSV, formulaire) borné. **Attendu** : la borne de la route, et une lecture bornée publique pour un corps non JSON. **Observé** : la borne est celle de l'instance (1 Mo) ; aucune option par route. Le jeu (1 Ko) et les signalements (10 Ko) sont donc remontés à 1 Mo, l'outil du hub de 64 Ko à 1 Mo ; l'import de captures (CSV de 8 Mo) relit lui-même le corps (`lireOctetsBornes`). ## 2. Réponse binaire ou redirection **Commande** : `withApi(h, { status: 302 })`, ou un handler qui rend `image/png` / `application/vnd…docx` / un flux SSE. **Attendu** : `response: { contentType }` (ou équivalent) et un statut 3xx déclarable. **Observé** : le contrat publie un `application/json {}` générique pour les tuiles, images, documents et flux ; `reponsesDocumentees` compte un écart par 302 (deux chez ATLAS : `auth/hq/start`, `oauth/authorize`). ## 3. Corps facultatif publié requis **Commande** : exporter `body: z.object({…}).optional()` (`POST /api/ingest/communes` chez ATLAS). **Attendu** : `requestBody.required: false`. **Observé** : `true` — un client généré exigera un corps que la route n'exige pas. ## Versions @eqs/platform-next 0.20.0. *Ouvert depuis le rejeu du rétrofit d'ATLAS (étape 7).*
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Infrastructure/eqs-platform#147
No description provided.