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

Next.js【详解】获取数据(访问接口)

Next.js 中分为 服务端组件 和 客户端组件,内置的获取数据各不相同

服务端组件

方式1 – 使用 fetch

export default async function Page() {const data = await fetch('https://api.vercel.app/blog')const posts = await data.json()return (<ul>{posts.map((post) => (<li key={post.id}>{post.title}</li>))}</ul>)
}

方式2 – 使用 ORM 或 数据库

以 MongoDB 为例,使用 mongoose 连接

1. 安装 mongoose

pnpm i mongoose 

2. 创建数据库连接文件 src\app\lib\db.js

const mongoose = require("mongoose");async function connectDB() {try {// 连接到本地 MongoDB 数据库 -- mongodb://数据库的用户名:密码@数据库的主机名:端口号/数据库的名称await mongoose.connect("mongodb://test:password@localhost:27018/test");console.log("MongoDB 连接成功");} catch (error) {console.error("MongoDB 连接报错", error);// 退出进程process.exit(1);}
}module.exports = connectDB;

3. 创建数据表映射文件 src\app\lib\models\Blog.js

const mongoose = require("mongoose");const blogSchema = new mongoose.Schema({title: String,content: String,
});
// 需要有第三个参数,否则对应的数据表名称会是blogs
const Blog = mongoose.model("blog", blogSchema, "blog");module.exports = Blog;

4. 页面中导入使用

src\app\test\page.tsx

import connectDB from "../lib/db";
import Blog from "../lib/models/Blog";export default async function HomePage() {try {// 连接数据库let res = await connectDB();// 查询博客数据const blogList = await Blog.find();return (<div><h1>博客列表</h1><ul>{blogList.map((blog) => (<li key={blog._id.toString()}>{blog.title}</li>))}</ul></div>);} catch (error) {console.error("获取数据出错:", error);return <div>获取数据失败</div>;}
}

5. Docker destop 安装 MongoDB

见 https://blog.csdn.net/weixin_41192489/article/details/145176073

6. 使用 MongoDB Compass 连接 MongoDB

下载安装 MongoDB Compass
https://www.mongodb.com/zh-cn/docs/compass/current/

新建连接

在这里插入图片描述
在这里插入图片描述

7. 创建数据库 test , 数据表 blog

在这里插入图片描述
在这里插入图片描述

8. 创建一条测试数据

在这里插入图片描述

{"_id": {"$oid": "67aefdd5de9bca5aae5aa6f8"},"title": "第1篇博客的标题","content": "第1篇博客的内容"
}

在这里插入图片描述
在这里插入图片描述

9. 为数据库 test 创建用户名、密码和角色

在这里插入图片描述
在这里插入图片描述

db.createUser( { user: "test", pwd: "password", roles: [ { role: "dbOwner", db: "test" } ] } )
  • user:指定要创建的用户名。
  • pwd:指定该用户的密码。
  • roles:指定用户的角色,角色决定了用户对数据库的操作权限。可以指定多个角色,每个角色是一个包含 role 和 db 的对象。role 是角色名称,db 是角色生效的数据库。

常见的角色及其说明:

  • read:允许用户读取指定数据库中的数据。
  • readWrite:允许用户读写指定数据库中的数据。
  • dbAdmin:允许用户管理指定数据库,如创建索引、查看统计信息等。
  • userAdmin:允许用户管理指定数据库中的用户和角色。
  • dbOwner:拥有指定数据库的所有权限,包括读写、管理用户和角色等。
  • root:拥有所有数据库的最高权限。

10. 启动项目,测试效果

浏览器访问 http://localhost:3000/test,效果如下:

在这里插入图片描述

客户端组件

见官网 https://nextjs.org/docs/app/getting-started/fetching-data#client-components

相关文章:

Next.js【详解】获取数据(访问接口)

Next.js 中分为 服务端组件 和 客户端组件&#xff0c;内置的获取数据各不相同 服务端组件 方式1 – 使用 fetch export default async function Page() {const data await fetch(https://api.vercel.app/blog)const posts await data.json()return (<ul>{posts.map((…...

反向代理模块kd

1 概念 1.1 反向代理概念 反向代理是指以代理服务器来接收客户端的请求&#xff0c;然后将请求转发给内部网络上的服务器&#xff0c;将从服务器上得到的结果返回给客户端&#xff0c;此时代理服务器对外表现为一个反向代理服务器。 对于客户端来说&#xff0c;反向代理就相当于…...

leaflet前端初始化项目

1、通过npm安装leaflet包&#xff0c;或者直接在项目中引入leaflet.js库文件。 npm 安装&#xff1a;npm i leaflet 如果在index.html中引入leaflet.js,在项目中可以直接使用变量L. 注意:尽量要么使用npm包&#xff0c;要么使用leaflet.js库&#xff0c;两者一起使用容易发生…...

CMS DTcms 靶场(弱口令、文件上传、tasklist提权、开启远程桌面3389、gotohttp远程登录控制)

环境说明 攻击机kali:192.168.111.128 信息收集 主机发现 ┌──(root㉿kali-plus)-[~/Desktop] └─# nmap -sP 192.168.111.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-23 14:57 CST Nmap scan report for 192.168.111.1 Host is up (0.00039s latenc…...

Docker 入门与实战:从安装到容器管理的完整指南

&#x1f680; Docker 入门与实战&#xff1a;从安装到容器管理的完整指南 &#x1f31f; &#x1f4d6; 简介 在现代软件开发中&#xff0c;容器化技术已经成为不可或缺的一部分。而 Docker 作为容器化领域的领头羊&#xff0c;以其轻量级、高效和跨平台的特性&#xff0c;深…...

git删除本地分支

一、命令方式 1、查看本地分支 git branch 2、切换到一个不删除的分支 git checkout branch_name 3、强制删除分支 git branch -D local_branch_name 二、工具方式 1、选择"Browse references"&#xff0c;右键"Delete branch"...

spring cloud gateway限流常见算法

目录 一、网关限流 1、限流的作用 1. 保护后端服务 2. 保证服务质量 (QoS) 3. 避免滥用和恶意攻击 4. 减少资源浪费 5. 提高系统可扩展性和稳定性 6. 控制不同用户的访问频率 7. 提升用户体验 8. 避免API滥用和负载过高 9. 监控与分析 10. 避免系统崩溃 2、网关限…...

本地使用docker部署DeepSeek大模型

1、相关技术介绍 1.1、RAG RAG&#xff08;Retrieval Augmented Generation&#xff09;&#xff0c;即“检索&#xff0c;增强&#xff0c;生成”&#xff0c;用于提升自然语言处理任务的性能。其核心思想是通过检索相关信息来增强生成模型的能力&#xff0c;具体步骤如下&am…...

C++ 设计模式-外观模式

外观模式的定义 外观模式是一种 结构型设计模式,它通过提供一个简化的接口来隐藏系统的复杂性。外观模式的核心思想是: 封装复杂子系统:将多个复杂的子系统或组件封装在一个统一的接口后面。提供简单接口:为客户端提供一个更简单、更易用的接口,而不需要客户端直接与复杂…...

【Linux网络编程】应用层协议HTTP(请求方法,状态码,重定向,cookie,session)

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;Linux网络编程 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 ​ Linux网络编程笔记&#xff1a; https://blog.cs…...

SQL进阶技巧:如何统计用户跨端消费行为?

目录 0 问题描述 2 问题剖析 技术难点解析 3 完整解决方案 步骤1:构造全量日期平台组合 步骤2:用户行为标记 步骤3:最终关联聚合 4 核心技巧总结 5 复杂度评估 往期精彩 0 问题描述 支出表: Spending +-------------+---------+ | Column Name | Type | +-----…...

Fiddler笔记

文章目录 一、与F12对比二、核心作用三、原理四、配置1.Rules:2.配置证书抓取https包3.设置过滤器4、抓取App包 五、模拟弱网测试六、调试1.线上调试2.断点调试 七、理论1.四要素2.如何定位前后端bug 注 一、与F12对比 相同点&#xff1a; 都可以对http和https请求进行抓包分析…...

基于SpringBoot+Vue的老年人体检管理系统的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

51c自动驾驶~合集51

我自己的原文哦~ https://blog.51cto.com/whaosoft/13320191 #毫末最新OAD 轨迹偏移学习助力端到端新SOTA~ 端到端自动驾驶技术在近年来取得了显著进展。在本研究中&#xff0c;我们提出了轨迹偏移学习&#xff0c;将传统的直接预测自车轨迹&#xff0c;转换为预测相对于…...

Redis 监视器:深入解析与实战指南

Redis 监视器&#xff1a;深入解析与实战指南 引言 随着互联网技术的飞速发展&#xff0c;企业对实时数据处理和高并发场景的需求日益增长。Redis作为一款高性能的内存数据库&#xff0c;在各个领域中得到了广泛应用&#xff0c;包括缓存、消息队列、实时数据分析等。然而&am…...

Java8适配的markdown转换html工具(FlexMark)

坐标地址&#xff1a; <dependency><groupId>com.vladsch.flexmark</groupId><artifactId>flexmark-all</artifactId><version>0.60.0</version> </dependency> 工具类代码&#xff1a; import com.vladsch.flexmark.ext.tab…...

超全Deepseek资料包,deepseek下载安装部署提示词及本地部署指南介绍

该资料包涵盖了DeepSeek模型的下载、安装、部署以及本地运行的详细指南&#xff0c;适合希望在本地环境中高效运行DeepSeek模型的用户。资料包不仅包括基础的安装步骤&#xff0c;还提供了68G多套独立部署视频教程教程&#xff0c;针对不同硬件配置的模型选择建议&#xff0c;以…...

Postman - Postman 导入 JSON 文件(导入集合或环境变量)

一、Postman 中的 JSON 文件 在 Postman 中导入的 JSON 文件通常是指集合&#xff08;Collection&#xff09;或环境变量&#xff08;Environments&#xff09; 集合是 Postman 中用于管理 API 请求的一种方式&#xff0c;可以通过导入 JSON 文件来加载一个集合 环境变量是 P…...

傅里叶分析之掐死教程

https://zhuanlan.zhihu.com/p/19763358 要让读者在不看任何数学公式的情况下理解傅里叶分析。 傅里叶分析 不仅仅是一个数学工具&#xff0c;更是一种可以彻底颠覆一个人以前世界观的思维模式。但不幸的是&#xff0c;傅里叶分析的公式看起来太复杂了&#xff0c;所以很多…...

​实在智能与宇树科技、云深科技一同获评浙江省“人工智能服务商”、 “数智优品”​等荣誉

近日&#xff0c;浙江省经信厅正式公布《2024 年浙江省人工智能应用场景、应用标杆企业、人工智能服务商及 “数智优品” 名单》。 实在智能获评浙江省“人工智能服务商”&#xff0c;核心产品 “实在 Agent 智能体” 入选 “数智优品”。一同获此殊荣的还有宇树科技、云深处科…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

Webpack性能优化:构建速度与体积优化策略

一、构建速度优化 1、​​升级Webpack和Node.js​​ ​​优化效果​​&#xff1a;Webpack 4比Webpack 3构建时间降低60%-98%。​​原因​​&#xff1a; V8引擎优化&#xff08;for of替代forEach、Map/Set替代Object&#xff09;。默认使用更快的md4哈希算法。AST直接从Loa…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

【实施指南】Android客户端HTTPS双向认证实施指南

&#x1f510; 一、所需准备材料 证书文件&#xff08;6类核心文件&#xff09; 类型 格式 作用 Android端要求 CA根证书 .crt/.pem 验证服务器/客户端证书合法性 需预置到Android信任库 服务器证书 .crt 服务器身份证明 客户端需持有以验证服务器 客户端证书 .crt 客户端身份…...