Nuxt具备的类似于express的功能,具有接受和响应http的能力。
Nuxt自动扫描~/server/api, ~/server/routes, 和 ~/server/middleware目录中的文件,以注册具有HMR支持的API和服务器处理程序。
每个文件都应该导出一个用defineEventHandler()定义的默认函数。
处理程序可以直接返回JSON数据,一个Promise或使用event.node.res.end()发送响应。
//创建一个新文件server/api/hello.js:
//server/api/hello.js
export default defineEventHandler((event) => {
return {
api: 'works'
}
})
//使用await $fetch('/api/hello')通用地调用这个API
eg2:
// server/routes/test.post.js 客户端必须使用POST方法
export default defineEventHandler(async (event) => {
//获取客户端的body
const body = await readBody(event)
console.log(695,"server body", body)
return {
hello: 'world'
}
})
//客户端调用
const config = {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: {
content: "我是什么",
temperature: 0.3
}
}
const { data, pending, error, refresh } = await useFetch("/test", config)
// nuxt.config.ts设置
routeRules: {
// 为 SEO 目的在构建时生成
'/': { prerender: true },
// 缓存 5分钟 好像在访问上出问题! 用 useState
'/api/*': { cache: { maxAge: 60 * 5 } }
},
// 抛出错误
throw createError({
statusCode: 400,
statusMessage: "This user does not exist.", //此处只能用英文,中文无法传输!
})
// String error where `statusCode` defaults to `500`
throw createError("An error occurred")
RE: Nuxt开发指南