当前位置: 首页 > 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>

相关文章:

  • 浅谈DeepSeek使用技巧
  • SSL证书和HTTPS:全面解析它们的功能与重要性
  • Swift 常量
  • 浅色系可视化大屏看起来确实很漂亮,但用到的地方确实很少
  • Linux网络编程(20250301)
  • 三维重建(十五)——多尺度(coarse-to-fine)
  • 六足仿生机器人地形自适应步态规划研究
  • 【PyQt5项目实战分享】基于YOLOv8的车辆轨迹识别与目标检测研究分析软件
  • 一、Redis 基础入门:概述与应用场景
  • Hbase完全分布式安装教程,详细版
  • 字符串相加
  • 迷你世界脚本道具接口:Item
  • 【Java】—— 堆
  • CC++的内存管理
  • import模块到另一个文件夹报错:ModuleNotFoundError: No module named xxx
  • Geotools中获取Shapefile的属性表格字符集编码的一种方法
  • [ruby on rails]ActiveModel源码阅读(Validations)
  • SQL注入的分类靶场实践
  • 【大模型安全】大模型安全概述
  • 常见webshell工具的流量特征
  • 哪个网站教做饭做的好/百度seo排名点击软件
  • 网站建设销售技巧/今日小说排行榜百度搜索风云榜
  • 让别人做网站的话术/发稿吧
  • 本地数据库搭建网站/精准营销策略都有哪些
  • 内部网站链接怎么做/网易最新消息新闻
  • php建站系统/郑州seo推广外包