server
server/ 目录用于为你的应用注册 API 和服务端处理器。
Nuxt 会自动扫描这些目录中的文件,注册带热模块替换(HMR)支持的 API 和服务端处理器。
Directory Structure
-| server/
---| api/
-----| hello.ts # /api/hello
---| routes/
-----| bonjour.ts # /bonjour
---| middleware/
-----| log.ts # 记录所有请求
每个文件都应导出一个用 defineEventHandler() 或 eventHandler()(别名)定义的默认函数。
处理器可以直接返回 JSON 数据、Promise 或 Response 对象。
不要在你的服务端路由或工具函数中导入 Vue 应用代码(组件、组合式函数或其他仅限应用的工具函数),也不要在应用中导入仅限服务端的代码。
server/api/hello.ts
import { defineEventHandler } from 'nitro/h3'
export default defineEventHandler((event) => {
return {
hello: 'world',
}
})
你现在可以在页面和组件中通用地调用这个 API:
app/pages/index.vue
<script setup lang="ts">
const { data } = await useFetch('/api/hello')
</script>
<template>
<pre>{{ data }}</pre>
</template>
服务端路由(Server Routes)
~~/server/api 中的文件在其路由中会自动添加 /api 前缀。