使用 Nuxt 构建简单后端接口及数据库数据请求

写在前面

本文主要为大家介绍,如何使用 Nuxt 框架实现一个简单的后端接口,并且从数据库中请求数据返回给前端。

实现

创建 serverMiddleware 文件夹

首先我们新建一个名字为 serverMiddleware 文件夹用来存储接口相关信息

目录结构如下:

在该文件夹下新建 api.js 写接口相关代码

api.js 接口相关代码

const mysql = require("mysql2");

export default function (req, res) {
  // 创建 MySQL 连接
  const connection = mysql.createConnection({
    connectionLimit: 10,
    host: "127.0.0.1", //服务器地址
    user: "root",
    password: "123456", //密码
    database: "jackson_blog_dev",
  });

  // 执行 MySQL 查询
  connection.query(
    "SELECT * FROM jacksonblogbacked",
    function (err, results, fields) {
      // 关闭数据库连接
      connection.end();

      if (err) {
        console.error("Error querying database:", err);
        res.status(500).json({ error: "Internal Server Error" });
        return;
      }

      // 发送查询结果作为 JSON 响应
      res.setHeader("Content-Type", "application/json");
      res.end(JSON.stringify(results));
    }
  );
}

安装 mysql2

安装 mysql2 用于连接本地数据库

npm install mysql2

创建 mysql 连接,并把相应信息填写上

(这一步大家要按照自己的数据库信息)

  // 创建 MySQL 连接
  const connection = mysql.createConnection({
    connectionLimit: 10,
    host: "127.0.0.1", //服务器地址
    user: "root", //用户名
    password: "123456", //密码
    database: "jackson_blog_dev",//数据库名
  });

接下来就是从表中查询数据,把数据返回出去即可

  // 执行 MySQL 查询
  connection.query(
    "SELECT * FROM jacksonblogbacked",
    function (err, results, fields) {
      // 关闭数据库连接
      connection.end();

      if (err) {
        console.error("Error querying database:", err);
        res.status(500).json({ error: "Internal Server Error" });
        return;
      }

      // 发送查询结果作为 JSON 响应
      res.setHeader("Content-Type", "application/json");
      res.end(JSON.stringify(results));
    }
  );

使用接口

现在我们已经在 api.js 中把接口信息写好了,如何在页面中使用呢?

初始化接口

nuxt.config 文件中初始化我们刚刚写好的接口

// nuxt.config.js

export default {
  // 其他配置项...

  serverMiddleware: [
    // 注册我们的初始化数据中间件
    { path: "/api/getData", handler: "~/serverMiddleware/api.js" },
  ]
}

页面中使用

接口已经初始化好了,接下来就是在页面中使用接口

在 pages/index.vue 中

<template>
  <div>
    <h1>测试mysql连接:{{ message }}</h1>
  </div>
</template>

<script>
export default {
  async asyncData({ $axios }) {
    try {
      // 从服务器端路由获取数据
      const { data } = await $axios.get("/api/getData");
      console.log("data: ", data);
      // 返回数据
      const { title } = data[0];
      return { message: title };
    } catch (error) {
      console.error("Error fetching data:", error);
      // 返回一个默认的错误消息
      return { message: "Failed to fetch data" };
    }
  },
};
</script>

这里和 vue 不同的是,我们需要使用 asyncData 函数进行数据请求

文档如下:异步数据 - NuxtJS | Nuxt.js 中文网

直接使用 Nuxt 内置的 $axios 进行接口请求,无需再安装 axios 就可以使用

我们拿到数据后直接以对象的形式返回到页面就可以使用了

      // 返回数据
      const { title } = data[0];
      return { message: title };

效果如下

总结

首先在 Nuxt 中实现后端接口数据请求,然后创建好接口文件,进行接口配置,最后在页面中使用 asyncData 函数进行接口请求即可。

以上就是如何使用 Nuxt 框架实现一个简单的后端接口所有内容,如果你感觉写的还不错对你有帮助的话,可以点个赞支持一下,你的支持就是作者最大的动力 !

源码

所有代码都已经提交到 GitHub

GitHub:chenyajun-create/nuxt-mysql (github.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/399063.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Bert基础(二)--多头注意力

多头注意力 顾名思义&#xff0c;多头注意力是指我们可以使用多个注意力头&#xff0c;而不是只用一个。也就是说&#xff0c;我们可以应用在上篇中学习的计算注意力矩阵Z的方法&#xff0c;来求得多个注意力矩阵。让我们通过一个例子来理解多头注意力层的作用。以All is well…

阿里云带宽

&#x1f4d1;前言 本文主要是如何将阿里云服务器迁移实现数据转移的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️** &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风讲故事 &#x1f304;每日…

蓝桥杯:C++素数、进制转换

素数 定义&#xff1a; 质数又称素数。一个大于1的自然数&#xff0c;除了1和它自身外&#xff0c;不能被其他自然数整除的数叫做质数&#xff1b;否则称为合数&#xff08;规定1既不是质数也不是合数&#xff09;。 代码&#xff1a; #include<bits/stdc.h> using n…

国外无人机蜂群作战典型战例及发展趋势

来源&#xff1a;飞机设计视界 作者&#xff1a;徐同乐,刘方,肖玉杰等 “人工智能技术与咨询” 发布 摘 要 随着通信组网、智能决策、协同控制等关键技术在无人机领域的推广应用&#xff0c;蜂群作战逐渐成为颠覆未来战场规则和样式的重要推手&#xff0c;其发展应用备受…

论文阅读——ONE-PEACE

ONE-PEACE: EXPLORING ONE GENERAL REPRESENTATION MODEL TOWARD UNLIMITED MODALITIES 适应不同模态并且支持多模态交互。 预训练任务不仅能提取单模态信息&#xff0c;还能模态间对齐。 预训练任务通用且直接&#xff0c;使得他们可以应用到不同模态。 各个模态独立编码&am…

物体检测-系列教程8:YOLOV5 项目配置

1、项目配置 yolo的v1、v2、v3、v4这4个都有一篇对应的论文&#xff0c;而v5在算法上没有太大的改变&#xff0c;主要是对v4做了一个更好的工程化实现 1.1 环境配置 深度学习环境安装请参考&#xff1a;PyTorch 深度学习 开发环境搭建 全教程 要求torch版本>1.6&#xf…

MapGIS 10.6 Pro前端开发低代码,快速构建WebGIS应用

随着实景三维、CIM、数字孪生等的快速发展&#xff0c;相关应用开发需求的市场增长对企业IT交付能力的要求越来越高&#xff0c;为了确保质量并实现提效降本&#xff0c;并让专业开发者更加专注于更具有价值和创新型的工作&#xff0c;低代码开发技术成为大家的优先选择。 为了…

C++/C函数指针及函数指针数组

文章目录 什么是函数指针函数指针的使用为什么要使用函数指针&#xff1f;回调函数函数指针数组及使用阅读两段有趣的代码指向成员函数的指针&#xff08;C特有&#xff09; 什么是函数指针 首先它是一个指针&#xff0c;一个指向函数的指针&#xff0c;在内存空间中存放的是函…

如何申请GeoTrust证书?

什么是GeoTrust&#xff1f; GeoTrust是一家国际认证机构&#xff08;CA&#xff09;&#xff0c;提供广泛的安全产品&#xff0c;包括SSL/TLS证书、代码签名证书、电子邮件证书等。它成立于1996年&#xff0c;自那以来一直是网络安全领域的领导者。GeoTrust的证书以其强大的加…

美团外卖药店商品月销量数据

字段内容&#xff1a; shop_id varchar(50) NOT NULL, shop_id_str varchar(50) NOT NULL, shop_name varchar(400) DEFAULT NULL, shop_min_price varchar(10) DEFAULT NULL, shop_score varchar(10) DEFAULT NULL, shop_wm_score varchar(10) DEFAULT NU…

王者归来!Stability-AI又放大招 | Stable Cascade:更快更强的图像生成模型!

标题&#xff1a;王者归来&#xff01;Stability-AI又放大招 | Stable Cascade:更快更强的图像生成模型&#xff01; Stable Diffusion官方最新发布了Stable Cascade&#xff0c;相较于之前的SD-1.5以及SDXL模型有了质的提升。可谓开源王者归来&#xff01; 该模型是建立在 Wr…

代码随想录 -- 哈希表

文章目录 有效的字母异位词描述题解 两个数组的交集描述题解 快乐数描述题解 两数之和描述题解 四数相加II描述题解 赎金信描述题解&#xff1a;暴力题解&#xff1a;哈希表 三数之和描述题解&#xff1a;哈希表&#xff08;不适合&#xff09;题解&#xff1a;双指针 四数之和…

已解决Application run failed org.springframework.beans.factory.BeanNot

问题原因&#xff1a;SpringBoot的版本与mybiats-puls版本不对应且&#xff0c;spring自带的mybiats与mybiats-puls版本不对应 这里我用的是3.2.2版本的SpringBoot&#xff0c;之前mybiats-puls版本是3.5.3.1有所不同。 问题&#xff1a;版本对不上 解决办法&#xff1a;完整…

深入浅出JVM(三)之HotSpot虚拟机类加载机制

HotSpot虚拟机类加载机制 类的生命周期 什么叫做类加载? 类加载的定义: JVM把描述类的数据从Class文件加载到内存,并对数据进行校验,解析和初始化,最终变成可以被JVM直接使用的Java类型(因为可以动态产生,这里的Class文件并不是具体存在磁盘中的文件,而是二进制数据流) 一个…

Qt应用-视频播放器实例

本文讲解Qt视频播放器应用实例。 实现功能 视频的播放暂停、拖动进度控制,声音控制播放列表控制播放区域的暂停控制,全屏控制等。 界面设计 <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"><class>frmVide…

cmd命令开启windows桌面远程控制并设置防火墙允许远程

cmd命令开启桌面远程控制 1、开启之前&#xff1a; 2、使用管理员身份运行cmd 3、执行cmd命令 reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlset\Control\Terminal server" /v fDenyTSConnections /t REG_DWORD /d 0 /f4、如果这台电脑的防火墙打开&#xf…

vue2的ElementUI的form表单报错“Error: [ElementForm]unpected width”修复

1. 问题 ElementUI的form表单&#xff0c;当动态切换显示表单时报错 Error: [ElementForm]unpected width。 翻译过来就是form表单的label宽度width出了问题。 2. 分析 参数说明类型可选值默认值label-width表单域标签的宽度&#xff0c;例如 ‘50px’。作为 Form 直接子元…

第3.3章:StarRocks数据导入--Stream Load

一、概述 Stream Load是StarRocks常见的数据导入方式&#xff0c;用户通过发送HTTP请求将本地文件或数据流导入至StarRocks中&#xff0c;该导入方式不依赖其他组件。 Stream Load作是一种同步导入方式&#xff0c;可以直接通过请求的返回值判断导入是否成功&#xff0c;无法手…

PHP实践:Laravel中事件使用讲解

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月CSDN上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师…

【wu-lazy-cloud-network】Java自动化内网穿透架构整理

项目介绍 wu-lazy-cloud-network 是一款基于&#xff08;wu-framework-parent&#xff09;孵化出的项目&#xff0c;内部使用Lazy ORM操作数据库&#xff0c;主要功能是网络穿透&#xff0c;对于没有公网IP的服务进行公网IP映射 使用环境JDK17 Spring Boot 3.0.2 版本更新 1…