1.1 创建项目
- 新建api_server文件夹作为项目根目录,并在项目根目录中运行如下的命令,初始化包管理配置文件:
npm init -y
- 运行如下命令,安装特定版本的express
npm i express@4.17.1
- 在项目根目录中新建app.js作为整个项目的入口文件,并初始化如下的代码:
// 导入express
const express = require('express')
// 创建服务器实例对象
const app = express()
// 启动服务器
app.listen(3007, () => {
console.log('api server running at http://127.0.0.1:3007');
})
1.2 配置cors跨域
- 运行如下命令,安装cors中间件:
npm i cors@2.8.5
- 在app.js中导入并配置cors中间件:
// 导入cors中间件
const cors = require('cors')
// 将cors注册成为全局中间件
app.use(cors())
1.3 配置解析表单数据的中间件
- 配置解析application/x-www-form-urlencoded格式的表单数据中间件:
app.use(express.urlencoded({
extends: false }))
1.4 初始化路由相关的文件夹
- 在项目根目录中,新建router文件夹,用来存放所有的路由关系。
- 在项目根目录中,新建router_handler文件夹,用来存放所有的路由处理函数模块。
1.5 初始化用户路由模块
- 在router文件夹,新建uer.js文件,作为用户的路由模块,并初始化代码如下:
const express = require('express')
// 创建路由对象
const router = express.Router()
// 注册新用户
router.post('/riguser', (req, res) => {
res.send('注册成功!')
})
// 登陆
router.post('/login', (req, res) => {
res.send('登录成功')
})
// 将路由对象共享出去
module.exports = router
- 在app.js中,导入并使用用户路由模块:
// 导入并注册用户路由模块
const userRouter = require('./router/user')
app.use('/api', userRouter)
1.6抽离用户路由模块中的处理函数
为了保证路由模块的纯粹性,所有的路由处理函数,必须抽离到对应的路由处理函数模块中。
- 在/router_handler/user.js中,使用exports对象,分别向外共享如下两个路由处理函数:
// 注册新用户的处理函数
exports.regUser = (req, res) => {
res.send('注册成功!')
}
// 登陆的处理函数
exports.login = (req, res) => {
res.send('登录成功')
}
- 将/router/user.js中的代码修改为如下结构:
// 导入路由处理函数对应的模块
const user_handler = require('../router_handler/user')
// 注册新用户
router.post('/riguser', user_handler.regUser)
// 登陆
router.post('/login', user_handler.login)
登陆注册
2.1 新建ev_users表
在my_db_01数据库中,新建ev_users表:
2.2 安装并配置mysql模块
在api接口项目中,需要安装并配置mysql这个第三方模块,来连接和操作mysql数据库:
- 运行如下命令,安装mysql模块:
npm i mysql@2.18.1
- 在项目根目录中新建/db/index.js文件,在此自定义模块中创建数据库的连接对象:
// 导入mysql模块
const mysql = require('mysql')
// 创建数据库对象
const db = mysql.createPool({
host: '127.0.0.1',
user: 'root',
password: '88888888',
database: 'my_db_01',
})
module.exports = db
2.3 注册
2.3.0 实现步骤
- 检测表单数据是否合法
- 检测用户名是否被占用
- 对密码进行加密处理
- 插入新用户
2.3.1 检测表单数据是否合法
判断用户名和密码是否为空:
// 注册新用户的处理函数
exports.regUser = (req, res) => {
// 获取客户端提交到服务器的用户信息
const userinfo = req.body
// 对表单中的数据进行合法校验
if(!userinfo.username || !userinfo.password){
return res.send({
stutas: 1,
msg: '用户名或密码不能为空!'
})
}
console.log(userinfo);
res.send('注册成功!')
}
检测用户名是否被占用
- 导入数据库操作模块:
const db = require('../db/index')
- 定义SQL语句
- 执行SQL语句并更具结果判断用户名是否被占用:
// 导入数据库操作模块
const db = require('../db/index')
// 注册新用户的处理函数
exports.regUser = (req, res) => {
// 获取客户端提交到服务器的用户信息
const userinfo = req.body
// 对表单中的数据进行合法校验
if(!userinfo.username || !userinfo.password){
return res.send({
status: 1,
msg: '用户名或密码不能为空!'
})
}