所有API端点及其解析器都定义在apps/api/包中。在这里,您会找到一个包含API不同功能模块的routes文件夹。每个模块都有自己的文件夹,并导出其所有解析器。

创建新模块

要创建一个新模块,只需在apps/api/app/server/api/routes目录中创建一个新文件夹。例如,如果您想创建一个名为hello的新模块,您需要在apps/api/app/server/api/routes目录中创建一个名为hello的文件夹。

apps/api/app/server/api/routes/hello/index.ts
// apps/api/app/routes/auth.ts
import { Hono } from 'hono';

const app = new Hono();

const hello = app.basePath('/hello').get('/', (c) => {
  const { name } = c.req.query();
  return c.json({ message: `Hello ${name || 'World'}!` });
});

// export type AppType = typeof hello;
// export const GET = handle(app);
// export const POST = handle(app);
export default hello;

注册路由器

我们在apps/api/app/server/api/index.ts文件中创建一个单独的Hono路由,并将所有子路由器聚合到一个主路由器中。要使模块及其端点在API中可用,您需要在index.ts文件中为此模块注册一个路由器:

apps/api/app/server/api/index.ts
import hello from './routes/hello';


const routes = app.route('/', books);

就是这样!您刚刚创建了一个新的API端点 - 现在可以在/api/hello访问它了 🎉