1.1 KiB
1.1 KiB
astro |
---|
minor |
Implements a new experimental middleware in Astro.
The middleware is available under the following experimental flag:
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:
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);