跳到主要内容

server

server/ 目录用于为你的应用注册 API 和服务端处理器。

Nuxt 会自动扫描这些目录中的文件,注册带热模块替换(HMR)支持的 API 和服务端处理器。

Directory Structure
-| server/
---| api/
-----| hello.ts      # /api/hello
---| routes/
-----| bonjour.ts    # /bonjour
---| middleware/
-----| log.ts        # 记录所有请求

每个文件都应导出一个用 defineEventHandler()eventHandler()(别名)定义的默认函数。

处理器可以直接返回 JSON 数据、PromiseResponse 对象。

不要在你的服务端路由或工具函数中导入 Vue 应用代码(组件、组合式函数或其他仅限应用的工具函数),也不要在应用中导入仅限服务端的代码。

为什么不能混用 Vue 和 Nitro 代码·
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 前缀。