ToB企服应用市场:ToB评测及商务社交产业平台

标题: 使用 Next.js 毗连 mysql 数据库 [打印本页]

作者: 拉不拉稀肚拉稀    时间: 2024-8-13 15:39
标题: 使用 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)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4