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) 数据文件是数据库的物理存储单元,一个表空间由一个或多…...

label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...