美文网首页
mvc测试Api流程

mvc测试Api流程

作者: wulle__ | 来源:发表于2022-06-11 22:22 被阅读0次

    一.什么是Express?

    Express是最流行的Node框架,是许多其他流行 Node框架的底层库

    1.Express框架核心特性

    • 可以设置中间件来响应HTTP请求

    • 定义了路由表用于执行不同的HTTP请求动作

    • 可以通过向模板传递参数来动态渲染HTML页面。

    二.安装express

    1.express 肯定基于在node 环境中安装,我们可以通过终端输入npm -v来查看我们是否安装了node环境

    2.通过终端来安装express框架(全局下安装)

    
    1、npm install -g express
    
    2、npm install -g express-generator
    
    

    三.express创建项目

    1.express项目名

    2.执行完毕后终端会出现步骤,按照下面的步骤依次执行

    image.png

    执行完之后会在本地文件夹中创建好项目

    image.png
    • 文件

    app.js : 是工程的配置文件

    bin : 创建服务器的文件夹

    node_modules :是安装node后用来存放包管理器,下载安装包的文件夹

    public : 把所有的静态资源(html或者css之类的) 指定放置到入口文件

    routes : 路由,储存数据

    views : 是创建express项目自带的jade文件

    3.通过终端安装热更新

    在终端输入npm install nodemon

    安装好之后,找到package.json文件,将start下的node改为 nodemon

    4.通过终端安装模板引擎(使用jade就不用安装,这里使用的是html)

    
    npm install express-art-template
    
    

    安装好以后需要更改在文件夹中的名字

    • 4.1 首先得找到app.js,在设置模板引擎前引入引擎(view enginer setup(视图引擎设置))

    • 4.2 在设置模板引擎中的jade改为html

    image.png

    5.启动项目

    
    npm start
    
    

    6.查看项目

    • 输入本地路径,端口号为3000

    在浏览器输入127.0。0.1:3000

    创建数据库,mvc流程

    • 一.mvc组成:由model、view、controller组成

    1.model: 负责跟数据库映射(一个变量映射一个表)关系的操作数据库

    2.view:前端页面的渲染(也叫视图层)

    3.controller: 控制层,富足对数据库进行处理,前端给后端发送的请求(req)和后端给前端发送的响应(res)都要在controller层处理

    最终由API创建路径,同时调用controller层的方法,完成整个接口开发

    • 二. mvc中文件的关系

    1.一个model文件对应一个server文件

    2.一个server文件对应一个controller文件

    3.一个controller文件对应一个API文件

    4.这些文件名都要保持一致,方便维护

    7.在当前项目中创建一个config文件夹,用来建立数据库

    • 创建database.js文件

    database.js 文件导出的是一个对象,对象中包含着所有跟数据库有关的参数

    
    //导出
    
    module.exports={
    
      database : 'data', //数据库名
    
      username:'root', //数据库用户名
    
      password:' ', //数据库密码,没有设置就是为空
    
      dialect  :'mysql', //数据库
    
      host:'localhost', // 数据库主机名
    
      port:'3306',//数据库端口号,//数据库端口号  navicat中是多少就写多少,如果被占用可以更改(3000-9000)
    
    timezone:'+08:00';//中国时区//因为中国事件采用东八时区的
    
    }
    
    
    
    //pool 数据库连接池,减少数据库压力
    
    pool : {
    
      max : 10,
    
      min: 0,
    
    acquire : 
    
    }
    
    

    在当前项目中,通过终端安装sequelize模块

    8.我可以在pages文件夹创建一个page.html。可以通过这个文件夹赖家成html模板,方便我们写代码
    
    <!DOCTYPE html>
    
    <html lang="en">
    
    <head>
    
        <meta charset="UTF-8">
    
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
    
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    
        <title>Document</title>
    
        <link rel="stylesheet" href="stylesheets/style.css">
    
        <link rel="stylesheet" href="stylesheets/{{file}}.css">
    
    
    
        {{block 'head'}}{{/block}}
    
    </head>
    
    <body>
    
        {{block 'content'}}{{/block}}
    
    </body>
    
    <script src="javascripts/{{file}}.js"></script>
    
    </html>
    
    
    • 在路由的文件中设置file

    file这一条键值对是当前页面下所说的css 和 js的文件名

    image.png
    • 在其他页面中继承page.html
    
    {{extend './page.html '}}//extend 继承
    
    {{block 'content'}}
    
      <h1>这里继承了page中的模板</h1>
    
    {{/block}}
    
    

    9.在当前项目中创建model 文件夹,用来映射数据表

    • 创建index.js

    1.sequelize 模块,并解析出Sequelize和 Datatypes

    2.导出数据库设置模块(config/database)

    3.实例化数据库对象

    4.引入数据库

    5.更新数据库

    6.导出数据表

    
    //引入sequelize模块
    
    let {Sequelize,DataTypes} = require('sequelize');
    
    
    
    //引入数据库设置 (require 引入)
    
    let db = require ('../config/database');
    
    
    
    //实例化数据库对象
    
    let sequelize = new Sequelize(db);
    
    
    
    //引入数据表
    
    let user  = require('../user')(sequelize,DataTypes);
    
    
    
    //更新数据库
    
    sequelize.sync()';
    
     
    
    //导出数据表
    
      module.exports = {
    
      user,
    
    }
    
    
    • 创建数据表文件user.js
    • 设置数据表

      1.文件名跟数据表名保持一致,此文件导出的是一个方法

    2.每一个字段都是一个对象,字段名就是这个对象的key

    3.设置id,需要设置主键和主键自动递增

    
    //直接返回一个方法
    
    module.exports = (sequelize, DataTypes) => sequelize.define('user', {
    
        //sequelize.define() 是sequelize插件对数据表的映射方法
    
        //第一个参数是表名
    
        //第二个参数是表字段的设置
    
        //每一个字段都是一个对象,字段名就是这个对象的key
    
        user_id: {
    
            type: DataTypes.INTEGER(11), //设置字段数据类型
    
            allowNull: false, //不允许为空
    
            primaryKey : true,  //设置主键
    
            autoIncrement : true, //设置主键自动递增
    
        },
    
        username:{
    
            type: DataTypes.STRING, //设置字段数据类型
    
            allowNull: false, //不允许为空
    
            unique : true, //设置唯一性
    
        },
    
        password : {
    
            type: DataTypes.STRING, //设置字段数据类型
    
            allowNull: false, //不允许为空
    
        },
    
        phone : {
    
            type: DataTypes.STRING, //设置字段数据类型
    
            allowNull: false, //不允许为空
    
            unique : true, //设置唯一性
    
        },
    
    
    
    });
    
    
    
    

    10.在当前项目创建server文件夹,用来操作数据表

    • 引入model表的映射

    • 设置添加用户的方法

    • 1.方法中,会将前端发送过来的数据(req.body/req.query)发送给数据库,并将数据库返回的信息发送给前端(以回调函数的形式)

    第一个参数是前端发送过来的数据

    第二个参数是回调函数

    req代表请求

    1.post 请求使用req.body 来接收

    2.get 请求使用req.query

    res代表响应

    • 3.如果数据添加成功,temp会接收到一个返回值(成功信息)

    • 4.把所有数据库的操作方法以对象的形式导出

    • 创建user.js文件

    
    //引入model表的映射
    
    let model = require('../model'); //index可以省略不写,其他的不可以省略
    
    
    
    //声明一个变量 接收user表
    
    let user = model.user;
    
    
    
    //添加用户的方法
    
    function addUser(obj,callback){
    
        let temp = user.create({
    
            username : obj.username,
    
            password : obj.password,
    
            phone : obj.phone,
    
        });
    
        // 如果数据添加成功,temp会接收到一个返回值(成功信息)
    
        //如果失败,temp不会接收到任何东西
    
        var data;
    
        if(temp){
    
            //成功
    
            data = {
    
                msg : 'success',
    
                code : 1,
    
            }
    
        }else{
    
            //失败
    
            data = {
    
                msg : 'error',
    
                code : 0,
    
            }
    
        }
    
        callback(data);
    
    }
    
    
    
    module.exports = {
    
        addUser,
    
    }
    
    

    11.在当前项目创建 controller 文件夹,用来做前后端交互,数据处理

    • 引入server表的操作

    • 设置添加用户的数据处理

    • 在定义的数据处理方法中调用

    1. server方法中第一个参数req.body / req.query

    2.server 方法中第二个参数,回调函数,在回调函数中以res.send() 向前端发送数据server方法。

    • 将所有的数据处理方法以对象的形式导出

    • 创建suer.js文件

    
    //交互,数据处理   server => contorller
    
    
    
    //引入 server表的操作
    
    let user = require('../server/user');
    
    
    
    //添加用户的数据处理
    
    function c_addUser(req,res){
    
        user.addUser(req.body,function(data){
    
            res.send(data);
    
        })
    
    }
    
    
    
    module.exports = {
    
        c_addUser,
    
    }
    
    

    12.在当前项目中创建 api 文件夹 这是一个接口

    • api是传给前端

    • 引入controller控制器

    • 设置添加用户API

    • 使用express 中的路由模块来设置api路径

    • 使用router 中 get /post方法 定义api 路径和请求方法

    • 导出路由模块 router

    • 找到app.js文件,在里面设置引入API、挂载API

    1.引入API

    
    //引入API
    
    var userApi = require('./api/user');
    
    
    image.png

    2.API挂载

    
    //API 挂载
    
    app.use('/userapi,userApi')
    
    
    image.png
    • 创建user.js文件

    
    //接口 controller => api 
    
    //api 传给前端
    
    
    
    var express = require('express');
    
    var router = express.Router( );
    
    
    
    var express = require('express');
    
    var router = express.Router ( );
    
    
    
    //引入controller 控制器
    
    let user = require(' ../controller/user');
    
    
    
    //设置添加用户ApI
    
    router.post('./add',user.c_addUser);
    
    
    
    module.exports = router
    
    

    13.最后在使用终端,在本项目中安装mysql2依赖,然后启动项目

    
    npm install mysql2
    
    
    
    npm start
    
    

    以上就是创建一个express项目的完整步骤

    express 是一个经典的mvc架构
    • 这是所有express创建好的所有文件夹目录

    image.png
    • 整个过程

    前端 => Api => controller = > server = > model => 后端

    四. 测试接口

    • 写好接口之后要进行测试,看是否可以正常使用

    • 通过浏览器的插件进行测试(apizza)

    image.png

    1.点击发送进行测试,如果接口可以使用,则返回成功,(这是自定义的返回方法的返回值)

    image.png

    2.点击发送进行测试,如果接口不可以使用,则会返回失败

    image.png

    3.然后可以看到数据库中可以查看我们新建的数据表

    image.png

    相关文章

      网友评论

          本文标题:mvc测试Api流程

          本文链接:https://www.haomeiwen.com/subject/juenmrtx.html