【前端必备】使用NodeJs写接口(本地连接MySQL + 连接到云服务MySQL)

包准备

express: 一个流行的Web框架,用于构建Web应用程序和API
1. npm install express

bodyparser: 一个中间件,用于解析请求体中的JSONURL编码和文本数据
2. npm install body-parser

jsonwebtoken: 一个用于生成和验证JSON Web令牌的库
3. npm install jsonwebtoken

mysql: 一个用于连接和操作MySQL数据库的库
4. npm install mysql

引入包介绍

----------------------------------------------------------------------------------------------
Express: 
  Express是一个基于Node.js的Web应用程序框架,它提供了一组强大的  特性和工具,使得开发Web应用程序变得更加容易和高效。Express包含了许多中间件和路由,可以帮助开发者快速构建Web应用程序。
  以下是Express的一些主要特性:
  1. 路由:Express提供了一种简单的方式来定义路由,使得开发者可以轻松地处理HTTP请求和响应。
  2. 中间件:Express中的中间件是一种函数,它可以在请求和响应之间进行处理。Express提供了许多内置的中间件,例如body-parser、cookie-parser等,也可以自定义中间件来满足特定的需求。
  3. 模板引擎:Express支持多种模板引擎,例如EJS、Handlebars等,使得开发者可以轻松地构建动态的Web页面。
  4. 错误处理:Express提供了一种简单的方式来处理错误,使得开发者可以更好地处理异常情况。
  5. 静态文件服务:Express可以轻松地提供静态文件服务,例如CSS、JavaScript、图片等。
  6. 数据库集成:Express可以与多种数据库进行集成,例如MongoDB、MySQL等。
----------------------------------------------------------------------------------------------
BodyParser:
  body-parser是一个Node.js中间件,用于解析HTTP请求体中的数据。
  在Node.js中,HTTP请求通常包含请求头和请求体两部分,请求头包含请求的元数据,而请求体包含请求的实际数据。
  body-parser中间件可以帮助我们解析请求体中的数据,使得我们可以更方便地处理HTTP请求。
  
  body-parser支持多种数据格式的解析,包括JSON、urlencoded和multipart/form-data等。
  其中,JSON格式的数据通常用于API接口的请求和响应,urlencoded格式的数据通常用于表单提交,multipart/form-data格式的数据通常用于文件上传。
----------------------------------------------------------------------------------------------
jsonwebtoken:
  jsonwebtoken是一个用于生成和验证JSON Web Tokens(JWT)的Node.js库。JWT是一种用于在网络应用程序之间安全传输信息的开放标准(RFC 7519)。它可以用于身份验证和授权,以及在应用程序之间传递声明。
  jsonwebtoken库提供了以下功能:
  1. 生成JWT:使用jsonwebtoken库可以轻松地生成JWT。您可以指定有效负载(即要传输的数据)和密钥(用于签名JWT)。
  2. 验证JWT:jsonwebtoken库还提供了验证JWT的功能。您可以验证JWT的签名是否有效,并检查有效负载中的声明。
  3. 解码JWT:jsonwebtoken库还提供了解码JWT的功能。这意味着您可以将JWT转换为JavaScript对象,以便更轻松地访问有效负载中的数据。
  使用jsonwebtoken库可以轻松地实现JWT身份验证和授权。它是一个流行的Node.js库,广泛用于构建安全的Web应用程序。
----------------------------------------------------------------------------------------------
MySQL:
  Node.js引入的mysql模块是一个用于连接和操作MySQL数据库的模块。它提供了以下功能:
  1. 连接MySQL数据库:使用mysql模块可以轻松地连接MySQL数据库。您可以指定数据库的主机名、端口号、用户名、密码和数据库名称。
  2. 执行SQL查询:mysql模块提供了执行SQL查询的功能。您可以执行SELECTINSERTUPDATEDELETESQL语句,并获取查询结果。
  3. 处理事务:mysql模块还提供了处理事务的功能。您可以使用事务来确保多个SQL查询的原子性。
  4. 防止SQL注入:mysql模块提供了防止SQL注入的功能。它使用参数化查询来防止恶意用户通过输入恶意数据来破坏数据库。
  使用mysql模块可以轻松地连接和操作MySQL数据库。它是一个流行的Node.js模块,广泛用于构建Web应用程序和其他类型的应用程序。
  ----------------------------------------------------------------------------------------------

使用NaviCat连接MySQL并创建表,并连接到MySQL

  1. 新建连接
    在这里插入图片描述
    在这里插入图片描述

  2. 新建数据库
    在这里插入图片描述

简单接口调用

以下是一个简单的接口示例,使用了Express和mysql模块连接MySQL数据库:

注( 在根目录创建一个 server.js 文件,存放以下内容 )
const express = require('express');
const mysql = require('mysql');

const app = express();

// 创建数据库连接
const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root', // mysql 用户名
  password: '这里是你的mysql密码', // 密码
  database: 'demo1' // 数据库名称
});

// 连接数据库
connection.connect((err) => {
  if (err) {
    console.error('Error connecting to database: ' + err.stack);
    return;
  }
  console.log('Connected to database as id ' + connection.threadId);
});

// 定义路由
app.get('/api/data', (req, res) => {
  // 查询数据
  connection.query('SELECT * FROM user', (error, results, fields) => {
    if (error) throw error;
    res.json(results);
  });
});

// 启动服务器
app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

这个接口会监听3000端口,当请求路径为/api/data时,会查询MySQL数据库中的users表,并返回查询结果。你可以根据自己的需求修改数据库连接信息和查询语句。

这个接口会监听3000端口,当请求路径为/api/data时,会返回一个JSON格式的数据。你可以根据自己的需求修改数据和请求路径。

示例: 登录接口

// 登录接口
app.post("/login", (req, res) => {
	var userName = req.body.userName
	var passWord = req.body.passWord
	if (!userName || !passWord) {
		res.send({
			code: 0,
			msg: "用户名与密码为必传参数...",
		})
		return
	}
	const sqlStr = "select * from user WHERE userName=? AND passWord=?"
	conn.query(sqlStr, [userName, passWord], (err, result) => {
		if (err) throw err
		if (result.length > 0) {
			// 生成token
			var token = jwt.sign(
				{
					identity: result[0].identity,
					userName: result[0].userName,
				},
				"secret",
				{ expiresIn: "1h" },
			)
			console.log(token)
			res.send({ code: 0, msg: "登录成功", token: token })
			// 如果没有登录成功,则返回登录失败
		} else {
			// 判断token
			if (req.headers.authorization == undefined || req.headers.authorization == null) {
				if (req.headers.authorization) {
					var token = req.headers.authorization.split(" ")[1] // 获取token
				}
				jwt.verify(token, "secret", (err, decode) => {
					if (err) {
						res.send({ code: 1, msg: "账号或密码错误" })
					}
				})
			}
		}
	})
})

示例: 注册接口

// 注册接口
app.post("/register", (req, res) => {
	var userName = req.body.userName
	var passWord = req.body.passWord
	if (!userName || !passWord) {
		res.send({
			code: 0,
			msg: "用户名与密码为必传参数...",
		})
		return
	}
	if (userName && passWord) {
		const result = `SELECT * FROM user WHERE userName = '${userName}'`
		conn.query(result, [userName], (err, results) => {
			if (err) throw err
			if (results.length >= 1) {
				// 如果有相同用户名 注册失败
				res.send({ code: 0, msg: "注册失败,用户名重复" })
			} else {
				const sqlStr = "insert into user(userName,passWord) values(?,?)"
				conn.query(sqlStr, [userName, passWord], (err, results) => {
					if (err) throw err
					if (results.affectedRows === 1) {
						res.send({ code: 1, msg: "注册成功" })
					} else {
						res.send({ code: 0, msg: "注册失败" })
					}
				})
			}
		})
	}
	console.log("接收", req.body)
})

本地测试接口

  1. 使用 node server.js 启动接口

  2. 写接口, 我这个axios是自己的一个封装文件
    你们可以在网上找一个axios封装好的,然后使用,或者直接使用axios请求
    在这里插入图片描述
    然后引入接口调用
    vue

云服务器安装MySQL

暂不介绍
可使用宝塔面板

  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
使用 Node.js 连接 MySQL 数据库可以使用第三方的 MySQL 驱动程序,如 mysqlmysql2 等。下面以 mysql2 为例,介绍如何使用 Node.js 连接 MySQL 数据库并提供 API 接口供微信小程序调用。 1. 安装 mysql2 驱动程序 使用 npm 安装 mysql2 驱动程序,打开终端或命令行工具,进入项目目录,执行以下命令: ``` npm install mysql2 --save ``` 2. 创建数据库和表 在 MySQL 数据库中创建一个名为 `test` 的数据库,然后创建一个名为 `users` 的表,表结构如下: ``` CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `age` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ``` 3. 编 Node.js 代码 在项目目录下创建一个名为 `app.js` 的文件,编如下代码: ```javascript const mysql = require('mysql2'); const express = require('express'); const app = express(); // 创建 MySQL 连接池 const pool = mysql.createPool({ host: 'localhost', user: 'root', password: 'root', database: 'test', waitForConnections: true, connectionLimit: 10, queueLimit: 0 }); // 查询用户列表 app.get('/users', (req, res) => { pool.query('SELECT * FROM users', (err, results) => { if (err) { res.status(500).send({ error: '查询用户列表失败' }); } else { res.send(results); } }); }); // 添加用户 app.post('/users', (req, res) => { const name = req.query.name; const age = parseInt(req.query.age); if (!name || !age || isNaN(age)) { res.status(400).send({ error: '参数错误' }); } else { pool.query('INSERT INTO users SET ?', { name, age }, (err, results) => { if (err) { res.status(500).send({ error: '添加用户失败' }); } else { res.send({ id: results.insertId, name, age }); } }); } }); // 启动服务器 app.listen(3000, () => { console.log('服务器已启动'); }); ``` 上述代码使用 mysql2 驱动程序连接 MySQL 数据库,提供了 `/users` 接口,用于查询用户列表和添加用户。 4. 启动服务器 在终端或命令行工具中执行以下命令启动服务器: ``` node app.js ``` 5. 在小程序中调用 API 接口 在小程序中使用 wx.request() 方法调用服务器端的 API 接口,如下所示: ```javascript wx.request({ url: 'http://localhost:3000/users', success(res) { console.log(res.data); // 打印用户列表 } }); wx.request({ url: 'http://localhost:3000/users?name=张三&age=18', method: 'POST', success(res) { console.log(res.data); // 打印添加的用户信息 } }); ``` 上述代码使用 wx.request() 方法调用服务器端的 `/users` 接口,获取用户列表和添加用户。注意,需要将 `localhost` 替换为服务器的 IP 地址或域名,同时需要保证服务器和小程序在同一局域网中。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星光菌子

你真是个富哥

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值