• 使用 Next.js 连接 mysql 数据库


    前言

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

    实现

    创建api/getData文件夹

    项目创建完成后在 app 文件下新建api文件夹,在 api 文件夹下新建 getData 文件夹,在 getData 文件夹下新建 route.js,这里面用于存储我们的接口信息,如下

    注意:在 Next.js中,app文件夹通常用于存放应用程序的配置和组件,而 api文件夹则用于存放API路由处理程序。

    当我们在 api文件夹中创建子文件夹时,Next.js 会将这些子文件夹视为 API 的路径的一部分。我们就可以直接将子文件夹的名称作为 API 的路径的一部分。

    拿我们上面创建的举例,我们在页面中请求的路径就为:api/getData

    route.js中写接口信息

    1. import { NextResponse } from 'next/server'
    2. const mysql = require('mysql2/promise')
    3. // 创建全局的 MySQL 连接池
    4. const pool = mysql.createPool({
    5. connectionLimit: 10,
    6. host: '127.0.0.1', // 服务器地址
    7. user: 'root',
    8. password: '123456', // 密码
    9. database: 'jackson_blog_dev',
    10. })
    11. export async function GET(request) {
    12. try {
    13. // 从连接池中获取连接
    14. const connection = await pool.getConnection()
    15. // 执行 MySQL 查询
    16. const [rows, fields] = await connection.query('SELECT * FROM jacksonblogbacked')
    17. // 释放连接回连接池
    18. connection.release()
    19. return NextResponse.json({ data: rows }, { status: 200 })
    20. } catch (error) {
    21. console.error('Error:', error)
    22. return NextResponse.json({ error: 'Internal Server Error' }, { status: 500 })
    23. }
    24. }

    安装 mysql2

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

    npm install mysql2

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

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

    1. // 创建全局的 MySQL 连接池
    2. const pool = mysql.createPool({
    3. connectionLimit: 10,
    4. host: '127.0.0.1', // 服务器地址
    5. user: 'root',
    6. password: '123456', // 密码
    7. database: 'jackson_blog_dev',
    8. })

    接下来就是从表中查询数据,我们使用 'next/server' 提供的 NextResponse 把数据以 json 对象的形式返回出去即可。

    1. export async function GET(request) {
    2. try {
    3. // 从连接池中获取连接
    4. const connection = await pool.getConnection()
    5. // 执行 MySQL 查询
    6. const [rows, fields] = await connection.query('SELECT * FROM jacksonblogbacked')
    7. // 释放连接回连接池
    8. connection.release()
    9. return NextResponse.json({ data: rows }, { status: 200 })
    10. } catch (error) {
    11. console.error('Error:', error)
    12. return NextResponse.json({ error: 'Internal Server Error' }, { status: 500 })
    13. }
    14. }

    使用接口

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

    页面中使用

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

    在 app/page.tsx 中

    1. 'use client' //客户端渲染时
    2. import React, { useState, useEffect } from 'react'
    3. const Home = () => {
    4. const [data, setData] = useState([])
    5. useEffect(() => {
    6. fetchData()
    7. }, [])
    8. const fetchData = async () => {
    9. try {
    10. const response = await fetch('/api/getData')
    11. const res = await response.json()
    12. const data = res.data[0]
    13. setData(data.title)
    14. console.log('data: ', data)
    15. } catch (error) {
    16. console.error('Error fetching data:', error)
    17. }
    18. }
    19. return (
    20. <div>
    21. <h1>测试mysql连接:{data}h1>
    22. div>
    23. )
    24. }
    25. export default Home

    这里为了测试数据响应渲染到页面中,我们使用了useState钩子函数,需要在顶部加上 'use client' 表示在客户端渲染即可。

    我们直接使用fetch请求我们的接口,正如我上面所说的,直接请求 /api/getData 这个接口地址即可,无需再进行其他接口配置。

    1. const fetchData = async () => {
    2. try {
    3. const response = await fetch('/api/getData')
    4. const res = await response.json()
    5. const data = res.data[0]
    6. setData(data.title)
    7. console.log('data: ', data)
    8. } catch (error) {
    9. console.error('Error fetching data:', error)
    10. }
    11. }

    最后将得到的数据渲染到页面中即可

    1. const data = res.data[0]
    2. setData(data.title)

    效果如下:

    总结

    首先在 Next 中创建好接口文件,接口文件的模式按照 Next 所提供的接口格式进行接口配置,最后在页面中直接使用接口路径使用即可。

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

    源码

    所有代码都已经提交到 GitHub

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

  • 相关阅读:
    C语言程序设计笔记(浙大翁恺版) 第十二周:程序结构
    计算摄影——图像美学评分
    docker 安装 redis
    POJ 2836 Rectangular Covering 状态压缩DP(铺砖问题)
    2022年全国最新消防设施操作员(中级消防设施操作员)真题题库及答案
    使用pytorch进行FFT和STFT
    C++文件服务器项目—数据库表设计 与 后端接口设计—6
    Lua脚本如何调用C/C++模块,Windows以及Linux版本演示
    【FPGA零基础学习之旅#13】串口发送模块设计与验证
    Github小彩蛋显示自己的README,git 个人首页的 README,readme基本语法
  • 原文地址:https://blog.csdn.net/chenyajundd/article/details/136188898