生命周期

了解 Nitro 如何运行并为你的应用程序提供传入请求。
Nitro v3 Alpha 文档仍在开发中——可能会有更新、不完善的地方和偶尔的不准确信息。

请求可以按以下顺序从任何这些层拦截和终止(有或没有响应):

路由规则

在 Nitro 配置中定义的匹配路由规则将执行。请注意,大多数路由规则可以在不终止请求的情况下更改响应(例如,添加头)。

nitro.config.ts
import { defineNitroConfig } from "nitro/config";

export default defineNitroConfig({
  routeRules: {
    '/**': { headers: { 'x-nitro': 'first' } }
  }
})
Read more in 路由 > 路由规则.

全局中间件

middleware/ 目录中定义的任何全局中间件都将运行:

middleware/info.ts
import { defineHandler } from "nitro/h3";

export default defineHandler((event) => {
  event.context.info = { name: "Nitro" };
});
从中间件返回将关闭请求,应尽可能避免。
了解更多关于 Nitro 中间件的信息。

Server entry

如果定义了,server entry handler 将运行:

server.ts
import { defineHandler } from "nitro/h3";

export default defineHandler((event) => {
  if (event.path === "/") {
    return "Home page";
  }
});
将 server entry 视为要运行的最后一个全局中间件。
了解更多关于 Nitro server entry 的信息。

路由

在此阶段,Nitro 将查看 routes/ 文件夹中定义的路由以匹配传入请求。

routes/api/hello.ts
export default (event) => ({ world: true })
了解更多关于 Nitro 文件系统路由的信息。

Renderer

如果没有匹配的路由,Nitro 将查找 renderer handler(已定义或自动检测)来处理请求。

了解更多关于 Nitro renderer 的信息。