当前位置: 首页 > news >正文

关于使用Next遇到的一些新特性

用next之后发现,这是作为全栈比较好用的框架

API

1、app Router

这是目前next官方以及未来推荐的新技术方向

若使用api路由用来管理后端api接口

(1)此时在app文件夹下创建 api名称目录(如 getApiKey)
(2)文件夹名称为API名称
(2)其文件,根据约定每个api文件夹下的文件使用route.xxx 作为api文件,这就像页面路由或组件中,创建的是page.xxx(传统意义的index.xx)作为默认首页文件

注意: 在 Next.js 13 和 14 中,引入了新的 app 目录和 Route Handlers,这些新特性改变了处理 API 请求的方式。使用 app 目录中的 API 路由时,建议使用 NextResponse 来处理响应,而不是传统的 res.json() 方法。

如:

// app/getApiKey/route.ts// 获取apiKey API 
// 请求方式:GET
// 请求地址:/getApiKey
// 请求参数: all or name
// 返回数据:[{ name: 'ChatGpt', value: 'sk-xxxxxx' }]import { NextResponse } from 'next/server';export async function GET(req, res) {const { searchParams } = new URL(req.url);const name = searchParams.get('name');// 返回数据 使用 mogonDB 数据库if (name) {// 获取指定apiKey}else {const data = [{name: 'ChatGpt',value: 'sk-xxxxxx'},{name: 'QianWen',value: 'sk-xxxxxx'}]// 获得所有apiKey return NextResponse.json(res, { status: 200 })}
}

2、pages 传统路由

这种常用传统方式
(1)依然在pages目录创建api文件
(2)但采用的文件名为API访问名称
(3)其中需要手动拿req来分辩get或其它method
(4)只需要导出接口函数,名称可随意命名

注意:包含 res传统返回

// pages/api/getApiKey.js
import { MongoClient } from 'mongodb';const uri = process.env.MONGODB_URI;async function getApiKey(req, res) {if (req.method !== 'GET') {return res.status(405).json({ message: 'Method Not Allowed' });}const { name } = req.query;try {const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });await client.connect();const db = client.db('your-database-name');const collection = db.collection('apikeys');if (name) {// 获取指定的 API Keyconst apiKey = await collection.findOne({ name: name });if (!apiKey) {return res.status(404).json({ message: 'API Key not found' });}return res.status(200).json(apiKey);} else {// 获取所有 API Keysconst apiKeys = await collection.find({}).toArray();return res.status(200).json(apiKeys);}} catch (error) {console.error('Error fetching API keys:', error);return res.status(500).json({ message: 'Internal Server Error' });}
}export default getApiKey;

相关文章:

关于使用Next遇到的一些新特性

用next之后发现,这是作为全栈比较好用的框架 API 1、app Router 这是目前next官方以及未来推荐的新技术方向 若使用api路由用来管理后端api接口 (1)此时在app文件夹下创建 api名称目录(如 getApiKey) (…...

【Linux 驱动】IMX6ULL input驱动

1. input子系统介绍 input 子系统分为 input 驱动层、input 核心层、input 事件处理层,最终给用户空间提供可访问的设备节点。 驱动层:输入设备的具体驱动程序,比如按键驱动程序,向内核层报告输入内容核心层:承上启下…...

Docker常用的一些命令

​ Docker 提供了一系列命令来管理和操作容器、镜像、网络和卷。以下是一些常用的 Docker 命令及其简单示例: 基本命令 启动 Docker sudo systemctl start docker停止 Docker sudo systemctl stop docker重启 Docker sudo systemctl restart docker查看 Docker 状态…...

不同环境下RabbitMQ的安装-3 操作RabbitMQ

前面两篇从不同环境下RabbitMQ的安装-1 为什么要使用消息服务 到同环境下RabbitMQ的安装-2 ARM架构、X86架构、Window系统环境下安装RabbitMQ介绍了关于如何在ARM架构、X86架构和Window系统下如何安装,各位小伙伴可以根据自己的实际开发场景参考安装。 到本篇是一些…...

十二、享元模式

文章目录 1 基本介绍2 案例2.1 Digit 接口2.2 Color 枚举2.3 BigDigit 类2.4 DigitFactory 类2.5 Client 类2.6 Client 类的测试结果2.7 总结 3 各角色之间的关系3.1 角色3.1.1 Flyweight ( 抽象享元 )3.1.2 ConcreteFlyweight ( 具体享元 )3.1.3 UnsharedFlyweight ( 非享元 )…...

Istio 金丝雀发布

转载:备考ICA-Istio 金丝雀实验4 环境清理 kubectl delete gw/helloworld-gateway vs/helloworld dr/helloworld-destination #测试 kubectl get svc,pods for i in {1..10};do curl $(kubectl get svc helloworld|grep helloworld|awk {print $3":"$5}|a…...

批发行业进销存-登录适配 android 横竖屏幕 源码CyberWinApp-SAAS 本地化及未来之窗行业应用跨平台架构

一、横竖屏切换的意义 以下是移动端横屏竖屏可切换在进销存中的一些重要应用: a、数据录入与查看 在录入商品信息、库存数量等大量数据时,横屏模式可以提供更宽阔的输入区域,减少输入错误。例如,在输入长串的商品编码或详细的商…...

Python进阶 JSON数据,pyecharts制图

目录 json数据格式的转换 什么是json json本质 注意 pyecharts快速入门 画一个最简单的折线图 使用全局配置选项优化折线图 总结 json数据格式的转换 什么是json 一种轻量级的数据交换格式,可以按json指定的格式去组织和封装数据 json本质 带有特定格式的…...

富士乐施5070-V打印机驱动安装

富士乐施5070-V打印机驱动安装 特指打印A3纸张需求,即驱动中能够选择纸张类型(安装选择305df驱动只能打印A4类型) 富士乐施打印机驱动下载网址: https://m3support-fb.fujifilm-fb.com.cn/driver_downloads/www/ 安装流程&…...

目标检测 | yolov4 原理和介绍

1. 简介 YOLOv4是一种高效且准确的目标检测模型,它在YOLOv3的基础上引入了多项改进,这些改进主要集中在网络结构的优化和训练技巧的更新上。以下是YOLOv4中的一些关键技术或模块,它们对提高目标检测性能起到了重要作用: CSPDarkne…...

扩散模型系列笔记(一)——DDPM

直观理解 扩散模型分为前向过程(扩散过程,Data → \to →Noise)和后向过程(生成过程或逆扩散过程,Noise → \to →Data)。在前向过程中,对于每一个观测样本,不断向样本中添加少量噪…...

【Nuxt】自定义插件和生命周期

自定义插件 方式一: app.vue // 创建插件(在app.vue中创建全局可以使用 而在某个页面中创建只有该页面可以使用) // 方式一: const nuxtApp useNuxtApp(); nuxtApp.provide("formDate", () > {return "2023-12-12"; }) nuxtAp…...

【算法】贪心算法

应用场景——集合覆盖问题 假设存在下面需要付费的广播台,以及广播台信号可以覆盖的地区。如何选择最少的广播台,让所有的地区都可以接收到信号 贪心算法介绍 1.贪心算法是指在对问题进行求解时,在每一步选择中都采取最好或者最优的选择 2…...

面试笔记 8.5

面试常见: Jvm,高并发,多线程,数据库,redis,框架 1.N I/O有什么核心组件 Java NIO 基本原理以及三大核心组件_java nio核心组件有哪些-CSDN博客 Buffer 缓冲 Channel 一对一 Channel 读取数据 Selector对应线程…...

redis面试(七)初识lua加锁脚本

redisson redisson如何来进行redis分布式锁实现的源码&#xff0c;基于redis实现各种各样的分布式锁的原理 https://redisson.org/ 这是官网 https://github.com/redisson/redisson/wiki/Table-of-Content 这是官方文档 开始 demo 建一个普通的工程在pom.xml里引入依赖 <…...

【mars3d】加载超图s3m模型说明

建议替换Cesium库&#xff0c;换成 超图版本Cesium mars3d mars3d-supermap &#xff0c;需要引入的资源为&#xff1a; "mars3d": ["Cesium-supermap/Widgets/widgets.css", //超图版本Cesium "Cesium-supermap/Cesium.js","mars3d/plu…...

android音频录音,(三)MediaRecorder音频录音示例

1. apk触发录音启动或录音停止按键&#xff1a; public void onClick(View v) {switch (v.getId()) {case R.id.btn_Record: //启动录音startRecording();break;case R.id.btn_stop: //停止录音stopRecording();break;default:break;} }2. 创建MediaRecorder对象并初始化&…...

未授权访问漏洞(重点版─=≡Σ(((つ•̀ω•́)つ)

1.* Redis 搭建靶场环境&#xff1a; 进入目录:cd/vulhub-master/redis/4-unacc 启动:docker-compose up-d 检查:docker-compose ps vi docker-compose.yml //查看端口和版本号 安装redis工具 在kali上安装redis进行服务链接 #安装redis apt-get install redis #redi…...

数据中台之数据开发,数据开发概述与数据计算能力的类型

目录 一、数据开发概述 二、数据计算能力的类型 2.1 概述 2.2 批计算 2.2.1 概述 2.2.2 批计算模型 2.2.2.1 传统数据处理方案的问题 2.2.2.2 MapReduce模型 2.2.2.3 Spark框架 2.3 流计算 2.4 批流一体 2.5 在线查询 2.6 即席分析 一、数据开发概述 数据开发是数…...

免费的SD-WAN服务

SD-WAN&#xff0c;SASE&#xff0c;零信任是近年来比较火的概念&#xff0c;SD-WAN发展已经很久了&#xff0c;但是真正能够自主研发做SD-WAN的企业其实并不算太多。 比扬云的SD-WAN产品是自主研发的&#xff0c;可控性强&#xff0c;最重要的是具有免费版本&#xff0c;可以免…...

【C++】:错误处理机制 -- 异常

目录 前言一&#xff0c;C语言传统的处理错误的方式二&#xff0c;C异常的概念三&#xff0c;异常的使用3.1 异常的抛出和匹配原则3.2 在函数调用链中异常栈展开匹配原则3.3 异常的重新抛出3.4 异常规范 四&#xff0c;自定义异常体系五&#xff0c;异常的优缺点 点击跳转至文章…...

Cocos Creator2D游戏开发(10)-飞机大战(8)-计分和结束

现在游戏基本能完了, 飞机能发射子弹,打了敌机,敌机也能炸; 接下来要做计分了; 步骤: 搞出一个lable让lable显示炸了多少飞机 开搞: ①创建一个Lable标签 ② root.ts文件 添加 property(Label) player_score: Label; // 标签属性 标签绑定 ③ 代码添加 注册 然后回调 contac…...

image.convert()函数转换格式及显示图像的RGB三通道图像

引 言 视觉任务处理的图片按照图像通道深度分为单通道图像和多通道图像。单通道图像有grayscale灰度图、binary二值图、PNG图&#xff0c;多通道图像有三通道24位真彩色RGB图&#xff0c;8位伪彩色图像&#xff0c;YCbCr图像等。本文先介绍各种格式图像的特点&#xff0c;随后讲…...

进程学习

今天开始了进程的学习&#xff0c;主要讲了进程的一些命令以及进程的创建、进程的调度、进程相关的函数接口和进程消亡。在函数接口中要注意子进程和父进程的关系以及回收顺序&#xff0c;避免出现僵尸进程。...

【Rabbitmq的消息模型】

消息队列的特性 durable&#xff1a;队列持久化。如果设置持久化&#xff0c;那么无论RabbitMQ在关闭时&#xff0c;就会将队列存储到本地磁盘&#xff0c;无论宕机还是重启&#xff0c;队列也不会删除&#xff1b;如果设置不持久化&#xff0c;那么在RabbitMQ关闭时&#xff…...

The Ether: EvilScience (v1.0.1)打靶渗透【附代码】(权限提升)

靶机下载地址: https://www.vulnhub.com/entry/the-ether-evilscience-v101,212/ 1. 主机发现端口扫描目录扫描敏感信息获取 1.1. 主机发现 nmap -sn 192.168.7.0/24|grep -B 2 00:0C:29:7F:50:FB 1.2. 端口扫描 nmap -p- 192.168.7.172 1.3. 目录扫描 dirb http://192.16…...

java学习day18MyBatis2

MyBatis2 缺点 编写SQL语句工作量较大&#xff0c;对开发人员编写SQL语句的功底有一定的要求。 SQL语句依赖于数据库&#xff0c;导致数据库移植性差&#xff0c;不能随意更换数据库 优点 MyBatis是免费且开源的。 与JDBC相比&#xff0c;减少了50%以上的代码量。 MyBat…...

算法巩固——旅行商问题

旅行商问题&#xff08;Traveling Salesman Problem, TSP&#xff09;简介 问题描述 旅行商问题是一个经典的组合优化问题&#xff0c;具体描述如下&#xff1a; 输入&#xff1a;一组城市及其两两之间的距离&#xff08;或成本&#xff09;。目标&#xff1a;找到一条从一个…...

ArcMap如何将shp数据导入oracle数据库

1. 连接数据库 2.在数据库中新建要素类 3.设置要素类名称和别名以及要素类型 4. 选择该要素类的坐标系 5.导入字段&#xff0c;点击导入&#xff0c;选择shp文件&#xff0c;点击添加&#xff0c;字段就导入进来了&#xff0c;点击完成 6. 点击刚才创建的要素类&#xff0c;点击…...

AppBoot:像 Django 一样使用 FastAPI

App Boot 开发 AppBoot 的背景是我一直没能寻找到满意的 FastAPI 项目模板。相比之下&#xff0c;Django 的项目结构和开发方式一直深得我心&#xff0c;因此我决定创建一个类似 Django 的 FastAPI 项目模板。 AppBoot 完全采用异步模式&#xff0c;内置 SQLAlchemy 2.0&…...

2024实验班选拔考试(热身赛)

比赛传送门 邀请码&#xff1a;2024wksyb A. 简单的数列问题 签到&#xff0c;记得开long long。 #include<bits/stdc.h> #define rep(i,a,b) for (int ia;i<b;i) #define per(i,a,b) for (int ia;i>b;--i) #define se second #define fi first #define endl …...

go语言的actor框架和air工具有什么区别?

Go语言的Actor框架和Air工具在多个方面存在显著的区别&#xff0c;主要体现在它们的设计目的、功能特性以及应用场景上。 ### Go语言的Actor框架 **设计目的与功能特性**&#xff1a; * **设计目的**&#xff1a;Actor框架是专为高并发和分布式系统设计的编程模型。它通过将系统…...

文件上传漏洞-HackBar使用

介绍 HackBar 是一个用于浏览器的扩展插件&#xff0c;主要用于进行网络渗透测试和安全评估。它提供了一系列方便的工具和功能&#xff0c;可以帮助用户执行各种网络攻击和测试&#xff0c;包括 XSS、SQL 注入、CSRF、路径穿越等 下载地址 可以到github上面去下载&#xff0…...

多层次算力网络;雾计算和边缘计算区别

目录 多层次算力网络 云计算 雾计算 边缘计算 海计算 相互协作 雾计算和边缘计算 一、概念与定义 二、目标与实现方式 三、应用场景 四、总结 多层次算力网络 涉及云计算、雾计算、边缘计算和海计算等技术之间的相互协作,这些技术各自具有不同的特点和覆盖范围,能…...

JavaDS —— 红黑树

前言 还是一样&#xff0c;这里的红黑树重点讲述插入代码的实现&#xff0c;如果对红黑树的删除感兴趣&#xff0c;可以去翻阅其他资料。 在数据结构专栏中已经对 AVL 树的旋转调整做了分析和讲解&#xff0c;这里红黑树也会使用到旋转调整的代码&#xff0c;就不讲述旋转代码…...

Python爬虫技术 第27节 API和RESTful服务

Python 爬虫技术是一种自动化获取网页内容的方法&#xff0c;通常用于数据收集、信息抽取或自动化测试。在讲解 Python 爬虫技术时&#xff0c;我们通常会涉及到以下几个关键概念&#xff1a; HTTP 请求&#xff1a;爬虫通过发送 HTTP 请求来获取网页内容&#xff0c;这是爬虫与…...

进程创建,进程消亡

虚拟地址&#xff1a;通过虚拟技术&#xff0c;将外部存储设备的一部分空间&#xff0c;划分给系统&#xff0c;作为在内存不足时临时用作数据缓存。当内存耗尽时&#xff0c;电脑就会自动调用硬盘来充当内存&#xff0c;以缓解内存的紧张。 练习: 编写一个代码实现,一个父…...

完美解决pip命令版本冲突导致对应版本模块包无法安装的问题

解决步骤 使用pip更新/降低指定模块包命令格式降低pip自身至指定版本的命令再次换源安装指定模块包 在对 FasterNet 这篇论文源码复现过程中&#xff0c;我们首先需要安装相关依赖文件&#xff08; path/to/your/requirements.txt&#xff09; -extra-index-url https://down…...

openssl 制作 信用库与服务证书

文章目录 前言openssl 制作 信用库与服务证书1. CA 证书2. 服务器证书/秘钥库3. 创建信用库4. 注意事项 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会…...

用Python打造精彩动画与视频,7.3 使用OpenCV在视频生成中的应用

第七章&#xff1a;高级视频和动画技术 7.3 使用OpenCV在视频生成中的应用 在本节中&#xff0c;我们将探索如何使用OpenCV进行一些基本的视频生成和增强技术。这些技术包括视频帧的叠加、视频剪辑、视频滤波等&#xff0c;通过这些技术可以提升视频的表现力。 7.3.1 素材准…...

记录一次Nacos安装启动异常的问题

今天在Linux中启动Nacos遇到了一个这样的错误&#xff1a; ERROR: Please set the JAVA_HOME variable in your environment, We need java(x64)! jdk8 or later is better! !! 解决办法&#xff1a; 1&#xff1a;查看JAVA_HOME配置&#xff1a; vi /etc/profile 2&#xff…...

.NET C# Dictionary Hashtable

.NET C# Dictionary & Hashtable 文章目录 .NET C# Dictionary & Hashtable1 Dictionary1.1 底层实现1.2 优点1.3 缺点 2 Hashtable2.1 底层实现2.2 优点2.3 缺点 3 对比总结4 遍历方式&#xff0c;与耗时对比foreach遍历Keys遍历IDictionaryEnumerator遍历耗时对比 1 …...

Spring Boot + Vue(4)授权查看信息

前言 在SpringBoot和Vue的组合中&#xff0c;实现一个查看商品详情信息需商品主人授权的功能&#xff0c;涉及到前后端的协作以及权限管理的设计。以下是一个基本的实现步骤和概念介绍&#xff1a; 一. 设计数据库模型 首先&#xff0c;你需要设计数据库模型来存储商品信息、用…...

面试经典 222. 完全二叉树的节点个数

二叉树我最近刷的特别多&#xff0c;差不多快刷完了&#xff0c;但是有一种题型差点给我忽略了&#xff0c;那就是完全二叉树&#xff0c;这也是一个很重要的题型&#xff0c;今天刚好有一道题目可以来复习一下完全二叉树的特性 题目链接如下&#xff1a;https://leetcode.cn/…...

基于springboot+vue+uniapp的“口腔助手”小程序

开发语言&#xff1a;Java框架&#xff1a;springbootuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#…...

Rider中修改默认文件关联,自定义打开方式

问题描述 想用Qt designer打开.ui文件&#xff0c;但是在Rider中&#xff0c;IDE会默认通过text进行打开 解决方法 1&#xff0c;允许用户将特定的文件类型与一个应用程序关联起来 File -> Settings -> Editor -> File Types -> Recognized File Types下&…...

【python】Linux升级版本

目的 迁移项目包路径到服务器上 查看服务器包是否和本地已有项目python版本相同然后发现~嗯不一样 项目上包时用的3.8~ 服务器用的2.7 查看方法&#xff1a; python -version解决方案 一&#xff1a;项目所有包重新下载 二&#xff1a;升级服务器python版本 第二种步骤&…...

CLOS架构

CLOS Networking CLOS Networking 是指使用 Clos 网络拓扑结构&#xff08;Clos Network Topology&#xff09;进行网络设计的一种方法。该方法是由贝尔实验室的工程师 Charles Clos 在1950年代提出的&#xff0c;以解决电路交换网络的可扩展性和性能问题。随着现代计算和网络…...

【HarmonyOS NEXT星河版开发学习】小型测试案例01-今日头条置顶练习

个人主页→VON 收录专栏→鸿蒙开发小型案例总结​​​​​ 基础语法部分会发布于github 和 gitee上面 ​ 前言 本系列可能是博客首发&#xff0c;鸿蒙开发星河版是一个全新的版本&#xff0c;由于参考视频较少鸿蒙开发不被重视导致csdn上面并没有全套的学习路线&#xff0c;…...

部署Springboot + Vue 项目到远程服务器Windows10系统的详细配置

远程服务器操作系统为Windows系统&#xff0c;Java程序环境&#xff0c;Maven环境都安装有&#xff0c;Mysql ,Redis等都有的前提下 1. mysql数据库导入&#xff0c;非常简单很好操作&#xff0c;这里省略。。比如用HeidiSql 或者Navicat 工具导入数据库 2. 后端javaSpringb…...