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


    写在前面

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

    实现

    创建 serverMiddleware 文件夹

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

    目录结构如下:

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

    api.js 接口相关代码

    1. const mysql = require("mysql2");
    2. export default function (req, res) {
    3. // 创建 MySQL 连接
    4. const connection = mysql.createConnection({
    5. connectionLimit: 10,
    6. host: "127.0.0.1", //服务器地址
    7. user: "root",
    8. password: "123456", //密码
    9. database: "jackson_blog_dev",
    10. });
    11. // 执行 MySQL 查询
    12. connection.query(
    13. "SELECT * FROM jacksonblogbacked",
    14. function (err, results, fields) {
    15. // 关闭数据库连接
    16. connection.end();
    17. if (err) {
    18. console.error("Error querying database:", err);
    19. res.status(500).json({ error: "Internal Server Error" });
    20. return;
    21. }
    22. // 发送查询结果作为 JSON 响应
    23. res.setHeader("Content-Type", "application/json");
    24. res.end(JSON.stringify(results));
    25. }
    26. );
    27. }

    安装 mysql2

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

    npm install mysql2

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

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

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

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

    1. // 执行 MySQL 查询
    2. connection.query(
    3. "SELECT * FROM jacksonblogbacked",
    4. function (err, results, fields) {
    5. // 关闭数据库连接
    6. connection.end();
    7. if (err) {
    8. console.error("Error querying database:", err);
    9. res.status(500).json({ error: "Internal Server Error" });
    10. return;
    11. }
    12. // 发送查询结果作为 JSON 响应
    13. res.setHeader("Content-Type", "application/json");
    14. res.end(JSON.stringify(results));
    15. }
    16. );

    使用接口

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

    初始化接口

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

    1. // nuxt.config.js
    2. export default {
    3. // 其他配置项...
    4. serverMiddleware: [
    5. // 注册我们的初始化数据中间件
    6. { path: "/api/getData", handler: "~/serverMiddleware/api.js" },
    7. ]
    8. }

    页面中使用

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

    在 pages/index.vue 中

    1. <template>
    2. <div>
    3. <h1>测试mysql连接:{{ message }}h1>
    4. div>
    5. template>
    6. <script>
    7. export default {
    8. async asyncData({ $axios }) {
    9. try {
    10. // 从服务器端路由获取数据
    11. const { data } = await $axios.get("/api/getData");
    12. console.log("data: ", data);
    13. // 返回数据
    14. const { title } = data[0];
    15. return { message: title };
    16. } catch (error) {
    17. console.error("Error fetching data:", error);
    18. // 返回一个默认的错误消息
    19. return { message: "Failed to fetch data" };
    20. }
    21. },
    22. };
    23. script>

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

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

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

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

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

    效果如下

    总结

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

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

    源码

    所有代码都已经提交到 GitHub

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

  • 相关阅读:
    14:00面试,14:06就出来了,问的问题过于变态了。。。
    overload(重载),override(覆盖 / 重写),overwrite(隐藏重 / 定义)
    齐博x1 你们的 上一页 下一页 还好么?
    多元融合:流媒体传输网络的全盘解法
    为什么⽤线程池?解释下线程池参数?
    std::c++ 中格式化任意字符串
    P1090 [NOIP2004 提高组] 合并果子【堆、贪心】
    Python考前复习
    Java检测网络是否正常通讯
    【LLM之RAG】Self-RAG论文阅读笔记
  • 原文地址:https://blog.csdn.net/chenyajundd/article/details/136058726