基本介绍
Express
Express 是一个基于 Node.js 平台,快速、开放、极简的 web 开发框架
- web 开发: 对不同的请求能够显示页面;提供接口服务;
- 框架是一个半成品,用来快速解决一类问题;框架:bootstrap, lay-ui, express, vue;
- 库就是工具集,通过调用api来完成具体的功能。 库:zepto.js , jQuery, day.js, , react ,underscore, lodash, art-template, axios, echart.....
理解:
- 我们前面用http模块来支持web服务,写接口 ----- 原生js
- 现在要用express来写web服务,写接口 ------ jQuery
MySQL
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品 。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。
目标:
简单来说就是写一个真正的接口,利用express,MySQL包.
要求:
接口1 :
添加学生数据
url: localhost:3000/api/student
method: post
参数格式:普通键值对
name: 字符串
age: 数值
测试:postman来测试
接口2:
获取所有的学生数据
url: localhost:3000/api/student
method: get
参数:无
测试:postman来测试
操作步骤
1.1任意位置创建一个文件夹,serverAPI
进行初始化 npm init --yes
安装包: npm i express mysql
2工具
node.js操作mysql:能使用mysql包来操作mysql数据库.要想使用这个包连接数据库,首先确保电脑有mysql
一共需要4个步骤:
- 加载 MySQL 模块
- 创建 MySQL 连接对象
- 连接 MySQL 服务器
- 执行SQL语句
由于他们的基本语法格式是一致的,只是要指向的sql语句不同而已,所以,我们可以对他们进行一个简单的封装.成为模块化分装
创建一个文件夹,存放前三个步骤 ,一般我们起文件夹名起有意义的名字,所以我起了一个utils--->sql.js
sql.js
// 1.加载mysql
var mysql = require('mysql');
// 2.创建连接
var connection = mysql.createConnection({
host: 'localhost', // 你要连接的数据库服务器的地址
port: 3306,// 端口号
user: 'root', // 连接数据库服务器需要的用户名
password: 'root', // 连接数据库服务器需要的密码
database: 'node136' //你要连接的数据库的名字
});
// 3.连接数据库
connection.connect((err) => {
// 如果有错误对象,表示连接失败
if (err) return console.log('数据库连接失败')
// 没有错误对象提示连接成功
console.log('mysql数据库连接成功')
});
module.exports = connection
3在server.js操作
3.1使用express快速创建一个web服务器
// 0. 导入 Express
const express = require('express')
// 1. 调用 express() 得到一个 app
// 类似于 http.createServer()
const app = express()
// 2. 设置请求对应的处理函数
// 当客户端以 GET 方法请求 / 的时候就会调用第二个参数:请求处理函数
app.get('/', (req, res) => {
res.send('hello world')
})
// 3. 监听端口号,启动 Web 服务
app.listen(3000, () => console.log('app listening on port 3000!'))
根据我们的需求代码如下:
const express = require('express')
const app = express()
app.post('/api/student', (req, res) => {
// 1.接受普通键值对的参数
// 2添加到数据库中
res.json({ msg: '添加成功', code: 1, result: data })
})
app.get('/api/student', (req, res) => {
res.json({ msg: '查询成功', code: 1})
})
app.listen(3000, () => {
console.log('接口服务器启动,3000...');
})
测试
3.2接受普通键值对的参数
先用mysql工具传参
想要获取普通的键值对,我们需添加app.use(express. urlencoded()),数据就全部装进req.body中
const express = require('express')
const app = express()
app.use(express.urlencoded())
app.post('/api/student', (req, res) => {
console.log(req.body);
// 1.接受普通键值对的参数
// 2添加到数据库中
res.json({ msg: '添加成功', code: 1, result: data })
})
app.get('/api/student', (req, res) => {
res.json({ msg: '查询成功', code: 1})
})
app.listen(3000, () => {
console.log('接口服务器启动,3000...');
})
拿到数据后{ name: '张三', age: '25' },我们需要解构赋值 ,接受普通键值对的参数我们就完成了
const { name, age } = req.body
3.3添加到数据库中(这就用到我们上面封装的sql工具了)
首先导入我们的工具,再进行添加数据库
导入
const connection = require('./utlis/sql')
添加到数据库中
const sql = `insert into student(name,age) values('${name}',${age})`
// connection.query(sql语句, (err, data) => {
connection.query(sql, (err, data) => {
if (err) {
console.log(err);
res.json({ msg: '添加失败', code: 0 })
} else {
console.log(data);
res.json({ msg: '添加成功', code: 1 })
}
})
3.4实现查询
app.get('/api/student', (req, res) => {
//创建sql
const sql = `select * from student`
connection.query(sql, (err, data) => {
if (err) {
console.log(err);
res.json({ msg: '查询失败', code: 0 })
} else {
console.log(data);
res.json({ msg: '查询成功', code: 1, result: data })
}
})
})
让我们最后总测试一下,先添加再立马查询