关于使用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) (…...
Python 爬虫入门(七):requests 库的使用「详细介绍」
Python 爬虫入门(七):requests 库的使用「详细介绍」 前言1. 初识 requests1.1 安装 requests 库1.2 发送 GET 请求1.3 发送 POST 请求 2. HTTP 请求详解2.1 请求方法2.2 请求头2.3 请求参数 3. 处理响应3.1 响应内容3.2 响应状态码3.3 响应头…...
两端约束的最优控制问题及其数值解法
问题的基本形式 设 n n n维系统状态房产 x ˙ ( t ) f [ x ( t ) , u ( t ) , t ] \dot{x}(t)f[x(t),u(t),t] x˙(t)f[x(t),u(t),t],控制向量 u ( t ) ∈ Ω u(t)\in\Omega u(t)∈Ω是分段连续函数, Ω ∈ R m \Omega\in R^m Ω∈Rm是有界闭集…...
电磁仿真--基本操作-CST-(6)-导线周围磁场
目录 1. 简介 2. 过程 2.1 新建工程 2.2 选择求解器 2.3 设置单位 2.4 设置频率 2.5 绘制导线 2.6 Background 2.7 边界条件 2.8 设置激励源 2.9 查看结果 3. 其他设置 3.1 网格类型 3.2 集总网络元件 3.3 阻抗和导纳矩阵 3.4 自适应网格细化 3.4 提升计算效率…...
用Java手写jvm之模拟方法调用指令invokexxx和方法返回指令xreturn
写在前面 源码 。 本文一起看下方法调用相关的指令invokexxx以及方法返回(栈帧弹出线程栈)相关的指令xReturn 。 1:正文 因为invokexxx指令和普通的指令不同,会创建一个新的栈帧,并压倒操作数栈中,所以我…...
自定义枚举类型检查
/*** 工单状态,使用字典:order_item_state*/ CheckEnum(nullAble true, enumType OrderItemStateEnum.class) private String workState; 注解类 package com.gdyunst.core.tool.validation;import javax.validation.Constraint; import javax.valid…...
探索四川财谷通抖音小店:安全与信赖的购物新体验
在数字经济蓬勃发展的今天,抖音平台凭借其庞大的用户基础和强大的内容生态,逐渐成为了电商领域的一股不可忽视的力量。其中,四川财谷通抖音小店作为这一浪潮中的佼佼者,不仅以其丰富的商品种类和独特的品牌魅力吸引了众多消费者的…...
systemd-manage系统服务图形化管理工具使用教程
1. systemd-manage介绍 systemd-manage是一个开源的基于systemd服务管理的图形化工具,使用qt图形库进行开发,可以提供服务管理,用户会话,配置文件修改,日志查询,性能分析,进程管理等功能。图形…...
移除元素(LeetCode)
题目 给你一个数组 和一个值 ,你需要 原地 移除所有数值等于 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 解…...
代码随想录27期|Python|Day38|509斐波那契|738.爬楼梯|746.746. 使用最小花费爬楼梯
贴一下动态规划的步骤(5步),就像是之前递归一样,需要每次落实到位。 确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 509. 斐波那契 注意到n的范…...
windows docker容器部署前端项目
一、介绍 Docker 是一个开源的平台,旨在简化应用程序的开发、部署和运行。它通过使用容器(containers)来实现这一点。容器是一种轻量级、可移植的虚拟化方式,可以在不同的环境中一致地运行软件。 Docker 的主要作用和优点包括&a…...
科普文:微服务之全文检索ElasticSearch 集群的搭建
一、集群有什么用 1.1 群集的含义与产生 群集(或称为集群)是由多台主机构成,但对外,只表现为一个整体,只提供一个访问入口(域名或IP),相当于一台大型计算机。互联网应用中…...
QtObject是干什么的?
QtObject 是 Qt Quick 中的一个基类,用于创建非视觉对象。这意味着 QtObject 不渲染任何视觉内容,它主要用于定义数据和逻辑,而不是用户界面元素。你可以把 QtObject 看作是 QML 中的一个基础组件,用于创建和管理不需要显示的对象…...
锐捷RCNA | 远程登录与路由技术
锐捷RCNA | 远程登录与路由技术 一、远程登录配置1. Telnet远程登录介绍2. 案例1--设置远程登录密码实现远程登录3. 案例2--定义不同用户账户实现远程用户权限隔离4. SSH远程登录介绍5. 案例--通过SSH功能远程管理设备 二、路由技术1. 直连路由的数据通信2. 间接路由的数据通信…...
实现Vue-tiny-diff算法
前言 前面我们实现了基本的数据更新到视图渲染的逻辑,但是这种方式(innerHTML)是极其低效的, 因此,我们相应引入 dom 和 diff 算法, 数据到视图的过程变为: state -> vdom -> dom vNode 层 所谓 vNode, 就是一个表示 dom 结构的轻量对象 {tag, props, children; }为…...
正则表达式测试工具
前言 正则表达式测试工具可供您输入正则表达式和测试文本,立即查看匹配结果. 下面是离线的HTML文件,同样可以提供相同的服务. 目录 使用说明 HTML代码 正则表达式的编写经验和方法 总结 使用说明 1.先将HTML代码存储成.html为后缀的文件; 2.然后用浏览器打开这个…...
Github 2024-08-02 开源项目日报 Top9
根据Github Trendings的统计,今日(2024-08-02统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4Go项目1C项目1Rust项目1Shell项目1Dockerfile项目1TypeScript项目1Dart项目1Docker-OSX: 在Docker容器中运行Mac OS X 创建周期:152…...
重生之我 学习【数据结构之顺序表(SeqList)】
⭐⭐⭐ 新老博友们,感谢各位的阅读观看 期末考试&假期调整暂时的停更了两个多月 没有写博客为大家分享优质内容 还容各位博友多多的理解 美丽的八月重生之我归来 继续为大家分享内容 你我共同加油 一起努力 ⭐⭐⭐ 数据结构将以顺序表、链表、栈区、队列、二叉树…...
前端day4-表单标签
<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>day4-表单</title> </head> <body&g…...
vue3-print-nb 表格打印分页,第一页有空白的情况出现解决方法(两种:一种原生,一种基于element表格)
第一种:基于element表格分页 <template><!-- element分组打印 --><div class"hello"><button v-print"printContent">打印</button><div id"printDiv"><p>工资统计表</p><p>…...
C/C++核心语法与嵌入式开发实战解析
1. C/C核心语法深度解析与面试高频考点作为从事嵌入式开发十余年的老手,我见过太多候选人在C/C基础问题上折戟沉沙。本文将系统梳理那些面试官最爱问的核心语法点,结合工业级开发经验,带你掌握真正实用的编程精髓。1.1 const关键字的工程级应…...
OpenClaw多模型切换指南:Phi-3-vision-128k-instruct与纯文本模型协同工作
OpenClaw多模型切换指南:Phi-3-vision-128k-instruct与纯文本模型协同工作 1. 为什么需要多模型协同 去年我在尝试用AI自动化处理日常工作时,发现一个尴尬的现象:当我需要处理图文混合内容时,调用纯文本模型效果惨不忍睹&#x…...
告别格式烦恼:如何用Chrome扩展一键转换网页图片格式?
告别格式烦恼:如何用Chrome扩展一键转换网页图片格式? 【免费下载链接】Save-Image-as-Type Save Image as Type is an chrome extension which add Save as PNG / JPG / WebP to the context menu of image. 项目地址: https://gitcode.com/gh_mirror…...
SmartComm:零堆内存的嵌入式命令通信框架
1. SmartComm 嵌入式设备间通信库深度解析SmartComm 是一个专为资源受限嵌入式系统设计的轻量级、零堆内存依赖的设备间命令通信框架。它不依赖动态内存分配(malloc/free),全部对象生命周期由栈管理,适用于 STM32F0/F1/F4、ESP32、…...
RemoteSerial:ESP32/ESP8266 Web串口调试库详解
1. RemoteSerial 库深度解析:面向 ESP8266/ESP32 的嵌入式 Web 串口监控系统RemoteSerial 是一个专为 ESP8266 和 ESP32 平台设计的轻量级、高实时性的 Web 串口监控库。它并非简单地将Serial对象映射到网页,而是构建了一套完整的异步 WebSocket 通信栈&…...
【c++】 入门实战笔记 (更新中)
c学习笔记 更新中 一、环境配置 说明: 你需要一个linux系统。如果只有windows,可以尝试在win上使用WSL2, 比虚拟机更方便。具体怎么使用网上教程一大推! Makefile学习:Makefile 学习笔记-CSDN博客 项目模板: Makefi…...
OpenAI API 报错 insufficient_quota 怎么办?4 种方案实测,最后一种最省心
上周五晚上十一点半,我正用 GPT-5 的 API 跑一个批量文本分类任务,跑到一半控制台突然刷屏红色报错:You exceeded your current quota, please check your plan and billing details. 错误码 insufficient_quota,HTTP 状态码 429。…...
IDM永久使用开源解决方案:安全验证与实战指南
IDM永久使用开源解决方案:安全验证与实战指南 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 问题诊断:破解工具背后的隐藏风险 痛点呈现…...
短剧小程序系统选型指南:为什么1%加密+99%开源是最优解?
最近半年,短剧赛道持续火爆,不少开发者和创业者找我咨询短剧小程序的源码选型问题。我自己带团队从零到一搭建了一套日活过万的短剧平台,期间踩过SaaS的坑、全加密的坑、所谓“全开源”的坑,最终落地了一套1%核心加密99%全开源的方…...
C语言逆向学习基础课 第8课 函数原型与可变参数使用误区
文章目录C语言实战高频深度错误解析一、第8课 函数原型与可变参数使用误区1.1 课程目标1.2 核心知识点讲解1.2.1 函数原型的作用与高频陷阱1.2.2 可变参数函数的正确使用(重点误区)1.3 实战示例(综合错误排查)1.4 课后作业&#x…...
