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

【nodeJS】服务端连接mysql、定义一个接口,并在前端调用

服务端连接数据库,并简单使用

  • 服务器连接mysql
  • 后端定义接口
  • 前端调用接口
    • 封装axios(简易版)
      • 解决前端请求接口返回了一个html
    • 定义api请求
    • vue中调用接口

服务器连接mysql

  1. 安装mysql2:npm install mysql2
  2. 启动服务:npm start

后端定义接口

const express = require('express');  
const app = express();
const mysql = require('mysql2')app.listen(3000, () => {console.log('Server is running on port 3000');
});// 创建数据库连接
const connection = mysql.createConnection({host: 'localhost',port: 3306,user: 'root',database: '数据库名',password: '数据库密码'
});// 【定义接口】根据用户ID查询用户信息
app.get('/userInfo', (req, res) => {const userId = req?.query?.id;if(!userId) {return res.status(400).send("用户ID为空");}// 构造查询语句(使用参数化查询防止SQL注入)const statement = `SELECT * FROM sys_user WHERE ID = ?`;connection.query(statement, [userId], (err, resultes, fields) => {if(err) {return res.status(500).send(err);}if(resultes.length === 0) {return res.status(400).send("用户未找到")}res.json(resultes[0]); // 假设用户ID是唯一的,返回第一个结果})
});

前端调用接口

封装axios(简易版)

// src\utils\request.js
import axios from 'axios'
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
// 对应国际化资源文件后缀
axios.defaults.headers['Content-Language'] = 'zh_CN'
// 创建axios实例
const service = axios.create({// axios中请求配置有baseURL选项,表示请求URL公共部分baseURL: import.meta.env.VITE_APP_BASE_API, //  Vite中环境变量需要以 VITE_ 为前缀,并通过import.meta.env 访问// 超时timeout: 30000,
})export default service

解决前端请求接口返回了一个html

axios.create时添加baseURL参数(与vue.config中的一致即可),目的是为了便于axios实例的方法传递相对URL。

  1. 如果你使用的是 Vite,环境变量需要以 VITE_ 为前缀,并通过 import.meta.env 访问。
  2. 如果你使用的是 Vue CLI,环境变量需要以 VUE_APP_ 为前缀,并通过 process.env 访问。

定义api请求

//src\api\users\index.js
import request from '@/utils/request'export function userInfoApi(params) {return request({url: '/userInfo',method: 'get',params,})
}

vue中调用接口

<template><div>用户信息<button @click="getUserInfo">获取用户信息</button></div>
</template><script setup lang="ts">
import { userInfoApi } from '@/api/users'
const getUserInfo = () => {userInfoApi({ id: 'f0019fdebedb443c98dcb17d88222c38' }).then((res) => {console.log('接口数据:', res.data)})
}
</script>
http://www.lryc.cn/news/546881.html

相关文章:

  • 驱动开发系列40 - Linux 显卡KMD驱动代码分析(一) - 设备初始化过程
  • 玩转大语言模型——Ubuntu系统环境下使用llama.cpp进行CPU与GPU混合推理deepseek
  • 20250301在chrome中安装CRX猫抓
  • Docker 深度解析:适合零基础用户的详解
  • LeetCode 分割回文串(回溯、dp)
  • 期权帮|股指期货入门知识:什么是股指期货基差?什么是股指期货价差?
  • 解锁GPM 2.0「卡顿帧堆栈」|代码示例与实战分析
  • Python:类型转换和深浅拷贝,可变与不可变对象
  • Redis——缓存穿透、击穿、雪崩
  • 8.1.STM32_OLED
  • Gartner发布安全运营指标构建指南
  • 【赵渝强老师】监控Redis
  • 【Unity】搭建HTTP服务器并解决IP无法访问问题解决
  • 如何远程访问svn中的URL
  • Free Auto Clicker - 在任意位置自动重复鼠标点击
  • 0005__PyTorch 教程
  • Unity Burst编译
  • 软件测试中的BUG
  • LabVIEW基于IMAQ实现直线边缘检测
  • C#:LINQ学习笔记01:LINQ基础概念
  • 15Metasploit框架介绍
  • NLP如何训练AI模型以理解知识
  • 【树莓派学习】树莓派3B+的安装和环境配置
  • python连接neo4j的方式汇总
  • Graph RAG 迎来记忆革命:“海马体”机制让问答更精准!
  • Spring(三)容器-注入
  • 剧本杀门店预约小程序:市场发展下的刚需
  • stable-diffusion-webui 加载模型文件
  • Ubuntu20.04双系统安装及软件安装(十一):向日葵远程软件
  • 华为云 | 快速搭建DeepSeek推理系统