chore: update middleware changeset (#6986)
This commit is contained in:
parent
4f591ce0e4
commit
17c074b202
1 changed files with 43 additions and 1 deletions
|
@ -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);
|
||||
```
|
||||
|
|
Loading…
Reference in a new issue