首页 > 其他分享 >day30 数据mock

day30 数据mock

时间:2022-11-10 21:55:06浏览次数:67  
标签:body 10 请求 json day30 token 数据 mock

软件生存周期

  • 问题定义

  • 可行性分析 ( 技术可行性 , 经济可行性 , 社会可行性 , 法律法规可行性 )

  • 需求分析 ( 原型图--产品经理/UI )

  • 概要设计 ( UML图 ( ER图 , 时序图 , 系统架构图 ) )

  • 详细设计 ( 数据库设计 , 技术选型 ( 项目讨论会 ( 确定需求文档 ) ) )

  • 编码 ( 开发 , 前后端开发 )

  • 测试 ( 前后端联调 -->测试人员测试 ( 禅道 ) )

  • 运行维护 ( 运维 ---云端运维 ( 有些公司会搭私有云服务器和公有云服务器 ) )

  • 在开发阶段前端和后端的编码时期可能不一样 , 当你的后端接口不存在的时候 , 那么就需要mock ( 模拟 ) 数据了

  • 一个项目进行开发可能会有多个项目组 , 项目组的构成 ( 前端2、3个 , 后端5、6个 , 1个测试,1个ui,可能有一个负责 ) , 项目组的统筹叫项目组长 , 再上面的项目统筹是项目经理 ( 一般负责三到五个项目组 )

mock数据

mock数据其实就是模拟对应的数据接口 ( 在后端接口没出来之前能独立开发 ) , 当后端接口出来以后进行前后端联调 ( swagger是用来生成接口文档的 )

mock数据的方法

  • 使用mock.js来进行数据模拟 ( 自己书写 )

  • 使用第三方mock平台 ( fastmock , apipost , apimock... ) : 第三方mock平台其实内核也是mock.js

fastmock 
基本使用
1.创建账号登录
2.创建项目接口

 

相关mock.js的文档操作 ( https://www.fastmock.site/docs#/projectapi )

{
    "string|1-10": "=", // 随机生成1到10个等号
    "string2|3": "=", // 随机生成2个或者三个等号
    "number|+1": 0, // 从0开始自增
    "number2|1-00.1-3": 1, // 生成一个小数,小数点前面1到10,小数点后1到3位
    "boolean": "@boolean( 1, 2, true )", // 生成boolean值 三个参数,1表示第三个参数true出现的概率,2表示false出现的概率
    "name": "@cname", // 随机生成中文姓名
    "firstname": "@cfirst", // 随机生成中文姓
    "int": "@integer(1, 10)", // 随机生成1-10的整数
    "float": "@float(1,2,3,4)", // 随机生成浮点数,四个参数分别为,整数部分的最大最小值和小数部分的最大最小值
    "range": "@range(1,100,10)", // 随机生成整数数组,三个参数为,最大最小值和加的步长
    "natural": "@natural(60, 100)", // 随机生成自然数(大于零的数)
    "email": "@email", // 邮箱
    "ip": "@ip" ,// ip
    "datatime": "@date('yy-MM-dd hh:mm:ss')" ,// 随机生成指定格式的时间
    "list|10": [{
        "id|+1": 1,
        "name": "@cword(10)",
        "title": "@cword(20)",
        "descript": "@csentence(20,50)",
        "price": "@float(10,100,10,100)",
    }],
    
    // ......
}
  • 使用node的json-server来进行数据mock

  • 使用后端配合mock ( 不存在 )

在线mock平台的数据都是随机生成的 ( 死数据 ) , 所以你只能执行查询的操作 , 不能进行增删改的操作 , 也就是说你发起的post请求 , delete请求 , put请求等 , 其实都是返回死的数据 ( mock关注的是数据的格式 , 并不关注于数据本身 )

简易的登录接口
{
    "code":"0000",
    "data":{
        "verifySuccess":function ({_req,Mock}){
            let body = _req.body;
            return body.username === "admin"&&body.password === "123456";
        },
        "userInfo":function({_req,Mock}){
            let body = _req.body;
            if(body.username === "admin"&&body.password ==="123456"){
                return Mock.mock({
                    username:"admin",
                    email:"@email",
                    address:"@address"
                })
            }else{
                return null;
            }
        },
        "token":function({_req,Mock}){
            let body = _req.body
            if(body.username==="admin"&&body.password==="123456"){
                return Mock.mock("@word(32)")
            }
            return null
        }
    },
    "desc":"成功"
}

  • 基于jwt ( json web token )的所有请求 ( 做验证的 ) 都要带上token进行验证

    (也就是在发送数据到某些jwt接口时 ( 不包括登录注册 ) , 需要携带token进行验证 ( 它是放在请求头/cookie ))

    一般放在请求头 ( 每次请求都会携带cookie所以一般不放在cookie , 然后浏览器会优先解析请求头所以不放请求体 ,它会速度更快,而且失效就不会去读取请求体的内容 )

  • token是你登录的时候给你返回的 , 后续你访问其他的相关jwt接口就需要带上这个token ( 加密的 )

    ( 所以就需要在登录的时候接收对应的token存到本地localStorage里 )

  • token的组成部分 ( 令牌 )

    标识 ( 是随机生成的 )

    数据 ( 相关的用户信息 )

    过期时间 ( 也就是失效时间 )

请求拦截 判断当前接口是否需要携带token , 如果需要就将token放入请求头中
响应拦截 判断当前是否有token返回 , 有就将token存入到localStorage

简单登录功能实现

//1.给button添加点击事件
$('button').click(()=>{
    //2.获取账号密码
    let username=$('input').eq(0).val()
    let password=$('input').eq(1).val()
    //3.发送请求(url地址,参数,回调函数)
  $.post('https://www.fastmock.site/mock/d388ea21cd817b29c02f14ff3e0dd4fe/shop/login',{
        username,password
    },(res)=>{
        //4.把发送过去返回的token保存到本地localStorage中
        localStorage.setItem('token',res.data.token)
    })
})
//5.发送请求时携带token
$(document).ajaxSend((event,request,setting)=>{
    request.setRequestHeader('token',localStorage.getItem('token'))
})

node的json-server

什么是node

node是一个用于服务端的js库 , 也就是说它使用在服务端 , 类似于后台语言 ( 相当于python )

使用过程
  • 需要安装node环境

    下载node ( node版本问题 , 稳定版14 , 16有一定问题 )

    安装

node -v //用于执行js文件
npm -v  //用于管理所有的第三方库(包管理器)

如果下载的是解压版本需要自己配置环境变量 ( 把解压路径复制到path内添加 )

  • 借助node安装json-server包

npm i json-server -g //全局安装json-server
  • 使用json-server命令启动相关服务 ( 依赖json文件来启动服务 )

    以vscode来启动对应的服务 , vscode需要以管理员身份运行

    需要执行一个指令 , 不然json - server无法使用

set-ExecutionPolicy RemoteSigned
启动json-server

准备json文件

{
    "users":[
        {
            "id":1,
            "username":"jack",
            "age":20
        },
        {
            "id":2,
            "username":"rose",
            "age":22
        }
    ]
}

打开终端

json-server -w 文件名 -p 端口号 -h 主机名 //默认主机名为localhost,默认端口号为3000

json-server 会给你提供一系列的接口 ( resultFul风格 )

对应的接口说明

get请求

localhost:3000/user/1  //访问id为1的用户
//?为条件查询
localhost:3000/user?id=1    //访问id为1的用户,返回的是数组的形式
localhost:3000/user?age=18  //访问age为18的用户,返回的是数组的形式
//分页查询
localhost:3000/users?_limit=1?_page=1   //查询第一个页面的1条用户数据

post请求

localhost:3000/users    //添加一个用户,返回添加的用户

delete请求

localhost:3000/users/1  //删除id为1的用户,返回的是一个空对象

put及patch请求

localhost:3000/users/1  //修改id为1的用户,返回的是你修改完的对象

标签:body,10,请求,json,day30,token,数据,mock
From: https://www.cnblogs.com/itlulu/p/16878920.html

相关文章

  • 变量初始化与数据批量操作
    在tensorflow中通过tf.Variable()添加变量,变量就是在tensorflow程序运行中不断改变的量,也就是“学习”的过程,通过改变变量来降低loss  所有变量在进行图操作前,一定要进......
  • 时许数据库clickhouse数据类型
    一:查看ck支持的数据类型SELECT*FROMsystem.data_type_families  二:数值类型数值类型Int类型固定长度的整数类型又包括有符号和无符号的整数类型。    ......
  • 如何选择数据
    1.Series1.1索引Series对象索引的工作原理和ndarray对象索引非常类似,不同的一点是,在对Series对象进行索引时,我们不但可以使用整数还可以使用Series对象本身的索引,......
  • Stream数据序列
    Stream类用于处理字符数据流或二进制数据流。1. Serial.available();  如果串口接收到信息返回TRUE,否则返回FALSE2. Serial.readString();    //读取串口接收......
  • 网络社群发现算法挖掘bilibili视频流量数据可视化|附代码数据
    全文链接:http://tecdat.cn/?p=19006最新研究表明,中国有超过7亿人在观看在线视频内容。Bilibili,被称为哔哩哔哩或简称为B站,是中国大陆第二个弹幕视频网站,最大的年轻人潮流......
  • antd table 树形数据动态加载
    antd的table组件支持树形结构的数据,不过前提是需要将整棵树的数据一次性全部返回,对于数据量比较大的情况下,可能会需要动态加载数据。exportdefaultfunctionDynamicT......
  • R语言中的SOM(自组织映射神经网络)对NBA球员聚类分析|附代码数据
    原文链接:http://tecdat.cn/?p=19077自组织映射 (SOM)是一种工具,通过生成二维表示来可视化高维数据中的模式,在高维结构中显示有意义的模式 ( 点击文末“阅读原文”获取完整......
  • 【视频】马尔可夫链蒙特卡罗方法MCMC原理与R语言实现|数据分享|附代码数据
    原文链接:http://tecdat.cn/?p=2687在贝叶斯方法中,马尔可夫链蒙特卡罗方法尤其神秘 ( 点击文末“阅读原文”获取完整代码数据******** )。它们肯定是数学繁重且计算量大......
  • React / Vue 实现 Excel 数据导入
    React1.Excel数据格式化主要是三个步骤:使用input/antd-upload组件上传需要导入的文件——将excel数据处理为json数据——将json数据处理成antd-table组件所需的数据(主要......
  • 数据分享|R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化
     全文链接:http://tecdat.cn/?p=22262在讨论分类时,我们经常分析二维数据(一个自变量,一个因变量) ( 点击文末“阅读原文”获取完整代码数据******** )。但在实际生活中......