chore: update middleware changeset (#6986)

This commit is contained in:
Emanuele Stoppa 2023-05-04 13:03:52 +01:00 committed by GitHub
parent 4f591ce0e4
commit 17c074b202
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -2,4 +2,46 @@
'astro': minor
---
New middleware API
Implements a new experimental middleware in Astro.
The middleware is available under the following experimental flag:
```js
export default defineConfig({
experimental: {
middleware: true
}
})
```
Or via CLI, using the new argument `--experimental-middleware`.
Create a file called `middleware.{js,ts}` inside the `src` folder, and
export a `onRequest` function.
From `astro/middleware`, use the `defineMiddleware` utility to take advantage of type-safety, and use
the `sequence` utility to chain multiple middleware functions.
Example:
```ts
import {defineMiddleware, sequence} from "astro/middleware";
const redirects = defineMiddleware((context, next) => {
if (context.request.url.endsWith("/old-url")) {
return context.redirect("/new-url")
}
return next();
});
const minify = defineMiddleware(async (context, next) => {
const repsonse = await next();
const minifiedHtml = await minifyHtml(response.text());
return new Response(minifiedHtml, {
status: 200,
headers: response.headers
});
})
export const onRequest = sequence(redirects, minify);
```