包准备
express: 一个流行的Web框架,用于构建Web应用程序和API 1. npm install express bodyparser: 一个中间件,用于解析请求体中的JSON、URL编码和文本数据 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查询的功能。您可以执行SELECT、INSERT、UPDATE和DELETE等SQL语句,并获取查询结果。 3. 处理事务:mysql模块还提供了处理事务的功能。您可以使用事务来确保多个SQL查询的原子性。 4. 防止SQL注入:mysql模块提供了防止SQL注入的功能。它使用参数化查询来防止恶意用户通过输入恶意数据来破坏数据库。 使用mysql模块可以轻松地连接和操作MySQL数据库。它是一个流行的Node.js模块,广泛用于构建Web应用程序和其他类型的应用程序。 ----------------------------------------------------------------------------------------------
使用NaviCat连接MySQL并创建表,并连接到MySQL
- 新建连接
- 新建数据库
简单接口调用
以下是一个简单的接口示例,使用了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) })
本地测试接口
- 使用 node server.js 启动接口
- 写接口, 我这个axios是自己的一个封装文件
你们可以在网上找一个axios封装好的,然后使用,或者直接使用axios请求
然后引入接口调用
—
云服务器安装MySQL
暂不介绍
可使用宝塔面板