Day14-NodeJS后端工程化流程
一 apifox工具
apifox是目前最好的接口调试工具
1 环境搭建
- 安装
- 登录
- 创建项目
- 接口里面创建对应文件夹
- 在指定的文件夹里面创建接口
2 GET请求
1 apifox发送GET请求
2 后端接收GET请求
router.get("/getUserinfo",function(req,res){
//req.query 获取get请求的数据
let {_id} = req.query
console.log(_id);
res.send({code:1,data:"查询用户信息"})
})
query:获取地址栏数据
3 POST请求
1 apifox发送POST请求
2 后端接收POST请求
router.post('/login', function(req, res) {
//req.body 获取post请求的数据
let {username,password} = req.body
console.log(username,password);
res.send({code:1,data:"登录成功"})
});
获取请求体数据
二 后端开发流程
1 MVC架构模式
Model View Controller简称MVC,即模型视图控制器。
**M:**model 模型(操作数据库)
**V:**view 视图层(界面)
**C:**Controlelr 控制层(接收和响应数据,已经写逻辑代码)
2 Controller控制层
把处理前端数据的代码提取到controller层,让路由只负责请求的匹配
- 在项目根目录新建一个controller文件夹
- 在controller文件夹中新建UserController.js文件
- 在UserController.js文件中编写如下代码
class UserController{
/**
* 登录
*/
login(request,response){
//获取前端请求的数据
let {username,password} = request.body
console.log("登录",username,password);
//向前端响应数据
response.send({code:1,data:"登录成功"})
}
/**
* 注册
*/
register(request,response){
//获取前端请求的数据
let {username,password} = request.body
console.log("注册");
//向前端响应数据
response.send({code:1,data:"注册成功"})
}
/**
* 根据id查询用户信息
*/
getUserinfo(request,response){
//获取前端请求的数据
let {_id} = request.query
console.log(_id);
//向前端响应数据
response.send({code:1,data:"查询用户信息"})
}
}
//给UserController类创建对象,并把对象暴露出去
module.exports = new UserController
在user.js路由中编写如下代码
3 model模型层
数据库数据的增 删 改 查都由模型层来完成
- 在项目的根目录下新建model文件夹
- 在model文件夹下新建UserModel.js文件
- 在UserModel.js文件中编写如下代码
let users = [
{_id:1,username:"admin",password:"123456"},
{_id:2,username:"chenyun",password:"123"}
]
class UserModel{
/**
* 根据用户名和密码进行查询
* @param {*} username
* @param {*} password
* @returns 查询到的对象
*/
findByUsernameAndPassword(username,password){
let user = users.find(e => e.username == username && e.password == password)
return user
}
/**
* 新增
* @param {*} username
* @param {*} password
*/
add(username,password){
let user = {_id:3,username,password}
users.push(user)
}
/**
* 根据id查询
* @param {*} id
* @returns
*/
findById(id){
let user = users.find(e =>e._id == id)
return user
}
}
//创建该类的对象,并暴露出去
module.exports = new UserModel()
在UserController中访问UserModel中的方法
//导入UserModel模型层对象
let userModel = require("../model/UserModel")
class UserController{
/**
* 登录
*/
login(request,response){
//获取前端请求的数据
let {username,password} = request.body
//调用模型层的方法
let user = userModel.findByUsernameAndPassword(username,password)
if(user){
response.send({code:1,data:"登录成功"})
}else{
response.send({code:0,data:"登录失败"})
}
}
/**
* 注册
*/
register(request,response){
//获取前端请求的数据
let {username,password} = request.body
console.log("注册");
//向前端响应数据
response.send({code:1,data:"注册成功"})
}
/**
* 根据id查询用户信息
*/
getUserinfo(request,response){
//获取前端请求的数据
let {_id} = request.query
//调用模型层
let user = userModel.findById(_id)
//向前端响应数据
response.send({code:1,data:user})
}
}
//给UserController类创建对象,并把对象暴露出去
module.exports = new UserController
三 异常的处理
问题:项目在运行的时候不可避免的会出现异常,项目出现异常后,程序不会在往下执行,并且会把异常信息展示给用户
异常处理:对项目中可能会出现异常的代码做处理,保证程序出现异常能够继续往下执行,并且给用户展示友好的信息
try {
//可能会出现异常的代码
console.log(e);
} catch (error) {
//如果try中的代码出现异常程序会进入catch
console.log("程序出错了");
}finally{
//不论try中有没有异常,finally中的代码都会执行
console.log("-----finally-----");
}