From d1d51d96e5948f30ffe45be2b6c5cda51f891396 Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Sat, 26 Oct 2024 14:37:42 +0200 Subject: [PATCH 1/3] i18n(fr): create `reference/modules/astro-middleware.mdx` See #9687 --- .../fr/reference/modules/astro-middleware.mdx | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 src/content/docs/fr/reference/modules/astro-middleware.mdx diff --git a/src/content/docs/fr/reference/modules/astro-middleware.mdx b/src/content/docs/fr/reference/modules/astro-middleware.mdx new file mode 100644 index 0000000000000..fb5e405f61038 --- /dev/null +++ b/src/content/docs/fr/reference/modules/astro-middleware.mdx @@ -0,0 +1,122 @@ +--- +title: Référence de l'API Middleware +i18nReady: true +tableOfContents: + minHeadingLevel: 2 + maxHeadingLevel: 6 +--- +import Since from '~/components/Since.astro'; +import ReadMore from '~/components/ReadMore.astro'; + +

+ +Un middleware vous permet d'intercepter les requêtes et les réponses et d'injecter des comportements de manière dynamique chaque fois qu'une page ou un point de terminaison est sur le point d'être rendu. Pour les fonctionnalités et les exemples d'utilisation, [consultez notre guide Middleware](/fr/guides/middleware/). + +## Importations depuis `astro:middleware` + +```js +import { + sequence, + createContext, + trySerializeLocals, + defineMiddleware, + } from 'astro:middleware'; +``` + +### `defineMiddleware()` + +You can import and use the utility function `defineMiddleware()` to take advantage of type safety: + +```ts +// src/middleware.ts +import { defineMiddleware } from "astro:middleware"; + +// `context` and `next` are automatically typed +export const onRequest = defineMiddleware((context, next) => { + +}); +``` + +### `sequence()` + +

+ +**Type :** `(...handlers: MiddlewareHandler[]) => MiddlewareHandler` +

+ +Une fonction qui accepte les fonctions middleware comme arguments et les exécutera dans l'ordre dans lequel elles sont transmises. + +```js title="src/middleware.js" +import { sequence } from "astro:middleware"; + +async function validation(_, next) {...} +async function auth(_, next) {...} +async function greeting(_, next) {...} + +export const onRequest = sequence(validation, auth, greeting); +``` + +### `createContext()` + +

+ +**Type :** `(context: CreateContext) => APIContext`
+ +

+ +Une API de bas niveau pour créer un objet [`APIContext`](/fr/reference/api-reference/#contexte-du-point-de-terminaison) à transmettre à une fonction `onRequest()` du middleware Astro. + +Cette fonction peut être utilisée par les intégrations/adaptateurs pour exécuter par programmation le middleware Astro. + +### `trySerializeLocals()` + +

+ +**Type :** `(value: unknown) => string`
+ +

+ +Une API de bas niveau qui prend n'importe quelle valeur et tente d'en renvoyer une version sérialisée (une chaîne de caractères). Si la valeur ne peut pas être sérialisée, la fonction générera une erreur d'exécution. + +## Middleware exports + +Lors de la définition du middleware de votre projet dans `src/middleware.js`, il exporte les fonctions définies par l'utilisateur suivantes : + +### `onRequest()` + +**Type :** `(context: APIContext, next: MiddlewareNext) => Promise | Response | Promise | void` + +Une fonction exportée requise depuis `src/middleware.js` qui sera appelée avant le rendu de chaque page ou route API. Elle reçoit deux arguments : [context](#context) et [next()](#next). `onRequest()` doit renvoyer une réponse (`Response`) : soit directement, soit en appelant `next()`. + +```js title="src/middleware.js" +export function onRequest (context, next) { + // intercepte les données de réponse d'une requête + // éventuellement, transforme la réponse + // renvoie directement une réponse, ou le résultat de l'appel de `next()` + return next(); +}; +``` + +Votre fonction `onRequest()` sera appelée avec les arguments suivants : + +#### `context` + +

+ +**Type :** `APIContext` +

+ +Le premier argument de `onRequest()` est un objet de contexte. Il reflète de nombreuses propriétés globales d'`Astro`. + +Consultez [Contextes de point de terminaison](/fr/reference/api-reference/#contexte-du-point-de-terminaison) pour plus d'informations sur l'objet de contexte. + +#### `next()` + +

+ +**Type :** `(rewritePayload?: string | URL | Request) => Promise`
+

+ +Le deuxième argument de `onRequest()` est une fonction qui appelle tous les middlewares suivants de la chaîne et renvoie une `Response`. Par exemple, un autre middleware pourrait modifier le corps HTML d'une réponse et attendre le résultat de `next()` permettrait à votre middleware de répondre à ces modifications. + +Depuis Astro v4.13.0, `next()` accepte un paramètre de chemin d'URL facultatif sous la forme d'une chaîne de caractères, d'une `URL` ou d'un objet `Request` pour [réécrire](/fr/guides/routing/#réécritures) la requête actuelle sans déclencher une nouvelle phase de rendu. From 447fd7c11eef13fc3c9ca40089a64b5aa43b38fa Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Mon, 28 Oct 2024 13:20:22 +0100 Subject: [PATCH 2/3] translate comment Co-authored-by: Thomas Bonnet --- src/content/docs/fr/reference/modules/astro-middleware.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/fr/reference/modules/astro-middleware.mdx b/src/content/docs/fr/reference/modules/astro-middleware.mdx index fb5e405f61038..9a22651c50ca4 100644 --- a/src/content/docs/fr/reference/modules/astro-middleware.mdx +++ b/src/content/docs/fr/reference/modules/astro-middleware.mdx @@ -31,7 +31,7 @@ You can import and use the utility function `defineMiddleware()` to take advanta // src/middleware.ts import { defineMiddleware } from "astro:middleware"; -// `context` and `next` are automatically typed +// `context` et `next` sont automatiquement saisis export const onRequest = defineMiddleware((context, next) => { }); From 71aedf3590d98c98044e5473b9b8c9d74e8d9395 Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Tue, 29 Oct 2024 10:49:11 +0100 Subject: [PATCH 3/3] translate missing sentence Co-authored-by: Thomas Bonnet --- src/content/docs/fr/reference/modules/astro-middleware.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/fr/reference/modules/astro-middleware.mdx b/src/content/docs/fr/reference/modules/astro-middleware.mdx index 9a22651c50ca4..d799a66783b31 100644 --- a/src/content/docs/fr/reference/modules/astro-middleware.mdx +++ b/src/content/docs/fr/reference/modules/astro-middleware.mdx @@ -25,7 +25,7 @@ import { ### `defineMiddleware()` -You can import and use the utility function `defineMiddleware()` to take advantage of type safety: +Vous pouvez importer et utiliser la fonction utilitaire `defineMiddleware()` pour bénéficier de la sûreté du typage : ```ts // src/middleware.ts