Day14-2-NodeJS后端开发流程

Day14-NodeJS后端工程化流程

一 apifox工具

apifox是目前最好的接口调试工具

1 环境搭建

  1. 安装

image-20230206165130648

  1. 登录
  2. 创建项目
  3. 接口里面创建对应文件夹

image-20230612143029550

  1. 在指定的文件夹里面创建接口

2 GET请求

1 apifox发送GET请求

image-20230612150645181

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请求

image-20230612151234904

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 控制层(接收和响应数据,已经写逻辑代码)

image-20230207142717406

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路由中编写如下代码

image-20230612160123130

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-----");
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值