与 Nextjs 集成
使用 Nextjs 应用路由,我们可以在 Nextjs 路由上运行 Elysia。
- 在应用路由中创建 api/[[...slugs]]/route.ts
- 在 route.ts 中创建或导入一个现有的 Elysia 服务器
- 将 Elysia 服务器作为默认导出进行导出
typescript
// app/api/[[...slugs]]/route.ts
import { Elysia, t } from 'elysia'
export default new Elysia({ prefix: '/api' })
.get('/', () => 'hello Next')
.post('/', ({ body }) => body, {
body: t.Object({
name: t.String()
})
})
由于符合 WinterCG,Elysia 将正常工作,但如果您在 Node 上运行 Nextjs,某些插件(如 Elysia Static)可能不会正常工作。
您可以将 Elysia 服务器视为一个普通的 Nextjs API 路由。
通过这种方式,您可以在一个代码库中将前端和后端共同放置,并在客户端和服务器动作中拥有 Eden 的端到端类型安全
有关更多信息,请参阅 Nextjs 路由处理程序。
前缀
因为我们的 Elysia 服务器不在应用路由的根目录下,所以您需要为 Elysia 服务器注释前缀。
例如,如果您将 Elysia 服务器放在 app/user/[[...slugs]]/route.ts 中,则需要将前缀注释为 /user。
typescript
// app/user/[[...slugs]]/route.ts
import { Elysia, t } from 'elysia'
export default new Elysia({ prefix: '/user' })
.get('/', () => 'hi')
.post('/', ({ body }) => body, {
body: t.Object({
name: t.String()
})
})
这将确保 Elysia 路由能够在您放置它的任何位置正常工作。