Nuxt3【服务器】server 详解
server 文件夹中的内容,会被自动注册为API和服务器处理程序。
服务器 API
对应路径 server/api
server/api/hello.ts
export default defineEventHandler((event) => {return {hello: 'world'}
})
页面中使用
<script setup lang="ts">
const { data } = await useFetch('/api/hello')
</script><template><pre>{{ data }}</pre>
</template>
动态参数 []
server/api/hello/[name].ts
export default defineEventHandler((event) => {const name = getRouterParam(event, 'name')return `Hello, ${name}!`
})
[…slug].ts 全匹配
捕获所有API,并通过 event.context.params.slug 访问匹配的内容
export default defineEventHandler((event) => {// 访问 /api/bar/baz ,则 event.context.params.slug 获取路由段:'bar/baz'return `Default foo handler`
})
定义HTTP方法
文件名中使用.get、.post、.put、.delete等后缀来定义HTTP方法
server/api/test.get.ts
export default defineEventHandler(() => 'Test get handler')
GET方法请求 /test 会返回Test get handler
获取 GET 方法中的参数 getQuery
如查询 /api/query?foo=bar&baz=qux
server/api/query.get.ts
export default defineEventHandler((event) => {const query = getQuery(event)return { a: query.foo, b: query.baz }
})
获取 POST 中的请求体 readBody
server/api/submit.post.ts
export default defineEventHandler(async (event) => {const body = await readBody(event)return { body }
})
获取运行时配置 useRuntimeConfig
export default defineEventHandler(async (event) => {const config = useRuntimeConfig(event)const repo = await $fetch('https://api.github.com/repos/nuxt/nuxt', {headers: {Authorization: `token ${config.githubToken}`}})return repo
})
配置信息在 nuxt.config.ts 中定义
export default defineNuxtConfig({runtimeConfig: {githubToken: ''}
})
获取和设置 Cookie 信息
方式一:parseCookies
export default defineEventHandler((event) => {const cookies = parseCookies(event)return { cookies }
})
**方式二:getCookie 和 setCookie **
来自 h3 包
export default defineEventHandler(event => {// 读取counter cookielet counter = getCookie(event, 'counter') || 0// 将counter cookie增加1setCookie(event, 'counter', ++counter)// 发送JSON响应return { counter }
})
错误处理
- 没有抛出错误,将返回状态码200 OK
- 任何未捕获的错误都将返回500 Internal Server Error
- 返回其他错误代码,请使用createError抛出异常
server/api/validation/[id].ts
export default defineEventHandler((event) => {const id = parseInt(event.context.params.id) as numberif (!Number.isInteger(id)) {throw createError({statusCode: 400,statusMessage: 'ID should be an integer',})}return 'All good'
})
状态码
返回其他状态码,请使用setResponseStatus实用程序。
server/api/validation/[id].ts
export default defineEventHandler((event) => {// 返回202 AcceptedsetResponseStatus(event, 202)
})
重定向 sendRedirect
export default defineEventHandler(async (event) => {await sendRedirect(event, '/path/redirect/to', 302)
})
服务器路由
对应路径 server/routes
server/routes/hello.ts
export default defineEventHandler(() => 'Hello World!')
即定义了 /hello 路由
服务器中间件
对应路径 server/middleware
中间件处理程序将在任何其他服务器路由之前在每个请求上运行,以添加或检查标头、记录请求或扩展事件的请求对象。
- 中间件处理程序不应返回任何内容(也不应关闭或响应请求),只能检查或扩展请求上下文或抛出错误。
server/middleware/log.ts
export default defineEventHandler((event) => {console.log('New request: ' + getRequestURL(event))
})
server/middleware/auth.ts
export default defineEventHandler((event) => {event.context.auth = { user: 123 }
})
服务器插件
对应路径 server/plugins
它们会被注册为Nitro插件。这允许扩展Nitro的运行时行为并钩入生命周期事件。
server/plugins/nitroPlugin.ts
export default defineNitroPlugin((nitroApp) => {console.log('Nitro plugin', nitroApp)
})
服务器工具
对应路径 server/utils
可以添加更多的自定义辅助函数
server/utils/handler.ts
import type { EventHandler, EventHandlerRequest } from 'h3'export const defineWrappedResponseHandler = <T extends EventHandlerRequest, D> (handler: EventHandler<T, D>
): EventHandler<T, D> =>defineEventHandler<T>(async event => {try {// 在路由处理程序之前执行某些操作const response = await handler(event)// 在路由处理程序之后执行某些操作return { response }} catch (err) {// 错误处理return { err }}})
服务器类型
对应路径 server/tsconfig.json
Nuxt >= 3.5 版本中可用
下方代码可提高IDE中对来自’nitro’和’vue’的自动导入的清晰度
server/tsconfig.json
{"extends": "../.nuxt/tsconfig.server.json"
}
服务器类型
对应路径 server/tsconfig.json
相关文章:
Nuxt3【服务器】server 详解
server 文件夹中的内容,会被自动注册为API和服务器处理程序。 服务器 API 对应路径 server/api server/api/hello.ts export default defineEventHandler((event) > {return {hello: world} })页面中使用 <script setup lang"ts"> const { da…...
防火墙技术原理与应用
防火墙概述 防火墙概念 防火墙:通过一种网络安全设备,控制安全区域间的通信,隔离有害通信,进而阻断网络攻击。一般安装在不同安全区域边界处,用于网络通信安全控制,由专用硬件或软件系统组成。 根据网络安全信任程度和需保护的对象,划分安全区域 公共外部网络:Inter…...
【BUU】[NewStarCTF 2023 公开赛道]Final -CP读取文件内容
漏洞检测 访问首页发现是ThinkPHP5 的站点 用工具扫描一下,发现存在ThinkPHP5.0.23 RCE漏洞 访问验证,写入shell 成功写入shell. 根目录发现flag,但是权限不足 提权获取flag 准备提权,这里一开始尝试了find,但是find权限不足 尝试采用cp命令,移动到web目录,发现访问还是…...
火绒安全:一款强大且高效的国产杀毒软件
火绒安全(Huorong Security)是一款国产的杀毒软件,以其轻量、高效和对系统资源占用低的特点受到广泛欢迎。与许多其他杀毒软件不同,火绒注重低调实用,旨在为用户提供无干扰且稳定的系统保护。 火绒安全的主要特点&…...
Oracle 的DBA有哪些权限
Oracle数据库的**DBA(数据库管理员)**拥有全部特权,是Oracle数据库系统最高权限的用户。DBA的权限包括但不限于: 1.创建和管理数据库结构: DBA可以创建、修改和删除数据库中的所有对象,如表、索引、视图等&…...
在navicat上运行sql文件
前言 本文简单介绍在navicat上运行sql文件 第一步: 打开navicat,点击连接->mysql 第二步: 输入连接名,可以随便取 然后点击确定 第三步: 双击连接名,颜色变化代表连接上了 第四步࿱…...
STM32裸机和RTOS中的线程安全问题及STM32cubeMX中的线程安全策略
STM32线程安全问题 术语“线程” 和“多线程” 适用于裸机和基于RTOS的应用程序,线程安全问题并不只存在于基于RTOS的应用程序中;裸机应用程序中也存在这个问题,在裸机应用程序中,中断服务程序允许调用C库函数。线程安全问题可能…...
图的遍历
一、深度优先遍历(DFS) 二、广度优先遍历(BFS)...
CUDA-MODE课程笔记 第8课: CUDA性能检查清单
我的课程笔记,欢迎关注:https://github.com/BBuf/how-to-optim-algorithm-in-cuda/tree/master/cuda-mode CUDA-MODE课程笔记 第8课: CUDA性能检查清单 课程笔记 这节课实际上算是CUDA-MODE 课程笔记 第一课: 如何在 PyTorch 中 profile CUDA kernels 这…...
【备战蓝桥杯青少组】第二天 奇特的砖墙
真题 第十四届省赛 编程题 第5题 工人砌了一面奇特的砖墙,该墙由N列砖组成(1≤N≤1e6),且每列砖的数量为Ki(1≤Ki≤1e4,相邻砖块之间无缝隙),每块砖的长宽高都为1。小蓝为了美化这面…...
图像处理 -- 仿射变换之Affine Transformation
仿射变换(Affine Transformation) 仿射变换是图像处理中的一种基本操作,通过线性变换和平移实现图像的几何变换。仿射变换包括旋转、缩放、平移、翻转、错切(shear)等操作。 1. 仿射变换的作用 旋转:将图…...
Nuxt3【项目配置】nuxt.config.ts
按环境添加配置 export default defineNuxtConfig({// 生产环境的配置$production: {routeRules: {/**: { isr: true }}},// 开发环境的配置$development: {//} })运行时的配置 runtimeConfig export default defineNuxtConfig({runtimeConfig: {// 只在服务器端可用的私有键ap…...
中智讯“2024高校人工智能边缘应用项目实战师资培训班”圆满举办
7月24日——7月28日,中智讯“2024高校人工智能&边缘应用项目实战师资培训班”在昆明理工大学成功举办。本次培训由昆明理工大学人工智能产业学院主办,中智讯(武汉)科技有限公司承办。来自昆明理工大学、西南林业大学、云南民族…...
IIS发布打包后文件
1.打开IIS软件 2 添加网站, 自定义网站名称-选择要放置的资源路径-选择IP地址 3.打开放置的资源目录放置打包后文件 4.选择浏览 搜索不到IIS可进行一下操作 控制面板-程序和功能-启用或关闭windows功能-勾选IIS...
四个自定义 SHAP 图
超越 Python 包,创建 SHAP 值的定制可视化 SHAP 值是了解模型如何进行预测的绝佳工具。SHAP 包提供了许多可视化效果,使这个过程更加简单。话虽如此,我们不必完全依赖这个包。我们可以通过创建自己的 SHAP 图来进一步了解模型的工作原理。在本…...
为什么使用HTTPS?
HTTPS现在是所有Web活动的首选协议,因为它是用户保护敏感信息的最安全方式。 HTTPS不仅对请求用户信息的网站至关重要。除了用户直接发送的信息外,攻击者还可以从不安全的连接中跟踪行为和身份数据。 HTTP为网站所有者带来的好处除了数据安全之外&…...
软件设计-系统架构师(五十五)
1在网络规划中,政府内外网之间应该部署网络安全防护设备。在下图部署的设备A是(),对设备A作用描述错误的是()。 问题1 A IDS B 防火墙 C 网闸 D UTM 问题2 A 双主机系统,即使外网被黑客攻击…...
三分钟学会线缆电流估算
今天带你用三分钟的时间,学会电源线承受电流估算,不浪费时间,直接开始吧。 工作温度30℃,长期连续90%负载下的载流量 1.5平方毫米――14A 2.5平方毫米――26A 4平方毫米――32A 6平方毫米――47A 16平方毫米――92A 25平方毫米――120A 3…...
Snipaste 的一款替代工具 PixPin,支持 gif 截图、长截图和 OCR 文字识别,功能不是一点点强!
Snipaste 的一款替代工具 PixPin,支持 gif 截图、长截图和 OCR 文字识别,功能不是一点点强! PixPin 的名字来源于“Pixel Pin”,简单来说是一个截图、贴图的工具,但是 PixPin 以截图和贴图两大功能为核心做了大量的优…...
Oracle基础教程
体系结构 数据库 一个操作系统仅有一个数据库 实例 拥有一系列后台进程和存储结构,一个数据库可拥有一个或多个实例,一般只有1个实例 数据文件(.dbf/.ora) 数据文件是数据库的物理存储单元,一个表空间由一个或多…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...
逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
