Rap的使用和mock数据

/** Rap */

Rap

阿里的产品和mockjs,来模拟真实数据

https://github.com/thx/RAP/wiki/user_manual_cn#%E5%88%9B%E5%BB%BA%E9%A1%B9%E7%9B%AE

Rap使用

一、注册和登录Rap

    http://rapapi.org/

二、分为团队、业务线、项目

    1、查找你所在的团队

查找你所在的团队

2、进入你所在的团

查找你所在的团队

3、创建业务

查找你所在的团队

4、创建模块和使用

查找你所在的团队

三、其它技巧

    1、将一个接口的字段下所有字段copy到另一个接口

        选择要copy的字段名,到另一个接口粘贴后在control+Enter,就将所有的内容全部copy过来

查找你所在的团队

四、MOCK工具

    1、使用参数的变量
        请求字段
            page   

        响应字段
            pageResponse 字段  @mock=${page}        // 这里最终pageResponse的显示就是Request中page的输入

            或者写默认值   @mock=${page=100}    // 如果请求不写page值默认为100

    2、id自动加1

        变量名     备注
        id|+1     @mock=100        // 表示id从100开始,每次加1

    3、其它写法

        @mock=@DATE

        @mock=true

        @mock=function(){return 100 + Math.random()*100}

查找你所在的团队

Rap的使用和mock数据

Mock.js

Mock拦截Ajax请求,

一、安装、使用

    $ npm i mockjs --save

    import Mock from 'mockjs';
    var data = Mock.mock({
        // 属性 list 的值是一个数组,其中含有 1 到 10 个元素
        'list|1-10': [{                
            'id|+1': 1                            // 属性 id 是一个自增数,起始值为 1,每次增 1
        }]
    })
    // 输出结果
    console.log(JSON.stringify(data, null, 4))


二、Mock.js提供4个方法方法和一个工具库

    1、方法

        Mock.mock(url, type, { 响应值 }) - 设置拦截请求、返回响应结果

        Mock.setup({                // 设置响应时间
            timeout: 400
        })

        Mock.valid()

        Mock.toJSONSchema()

    2、工具库

        Mock.Random


三、工具库

    const Mock = require('mockjs)
    const Random = Mock.Random;            // 先获取Random对象

    1、Random.boolean();        // true 生成出一个布尔值

    2、Random.natural();        // 8518407945788098

        Random.natural(60, 100);        // 生成出一个自然数60-100之间

    3、Random.integer(min, max);        // 7546601449898424

    4、Random.float();            // 1479142551150828.5

    5、Random.character()        // "E"

    6、Random.string(count)    // 随机一个字符串

    7、Random.range(10)            // [0,1,2,3,4,5,6,7,8,9]

    8、Random.date()                // "2005-09-28"

    9、Random.time()                // "00:43:01"

    10、Random.datetime()

    11、Random.now()                // "2019-02-01 10:38:56"

    12、Random.image('200x100', color, 'text')            // 生成一个宽200高100的图片占位

    13、Random.dataImage('200x100', 'Hello Mock.js!')

    14、Random.color()            // 生成一个颜色 "#f2a079"

    15、Random.rgb()                // "rgb(190, 121, 242)"

    16、Random.rgba()                // "rgba(121, 157, 242, 0.37)"

    17、Random.paragraph()    // 生成内容

    18、Random.url()

    19、Random.email()            // email

    20、Random.ip()                    // 随机ip

    21、Random.province()        // 随机省会名'黑龙江'

    22、Random.city()                // 随机城市名'哈尔滨'

    23、Random.county()            // 随机区名'南岗'

    24、Random.capitalize('hello')            // 首字母大写 'Hello'

    25、Random.upper( str )、Random.lower( str )        // 转换大小写

    26、Random.pick(['a', 'e', 'i', 'o', 'u'])            // "u" 随机一个

    27、Random.shuffle(['a', 'e', 'i', 'o', 'u'])        // 洗牌 ["a","i","o","e","u"]

    28、Random.id()    // "320000200603050615"

    29、Random.guid()                // "CbdCfC92-9cb6-7ebb-1a7c-e28AbCD0fd04"

    上面所有方法都可以写成@占位符的方式

    data: {
  boolean: Random.boolean()
}

    data: {
  boolean: '@boolean'
}
    这两个都相同,具体参考     http://mockjs.com/examples.html#Array


四、语法

    'name|rule': value

    生成规则 有 7 种格式:

        'name|min-max': 'abc'                        // min-max 生成一个字符串,重复次数大于min,小于max

        'name|count': value

        'name|min-max.dmin-dmax': value

        'name|min-max.dcount': value

        'name|count.dmin-dmax': value

        'name|count.dcount': value

        'name|+step': value


五、示例

     1、属性值是字符串String

        'name|min-max': 'ab'        // 重复 'ab' 字符串,重复次数大于等于 min,小于等于 max。  { name: 'abababab'}
        'name|count': 'ab'             // 重复 'ab' 字符串,重复次数等于 count


    2、属性值是数值Number

        'name|+1': 100                     // 初始值自动加1,返回101
        'name|1-100': 100             // 生成一个大于等于 1、小于等于 100 的整数,属性值 100 只用来确定类型。
        'name|1-100.1-10': 100     // 生成一个浮点数,整数部分大于等于 1、小于等于 100,小数部分保留 1 到 10 位。


    3、属性值是布尔Boolean

        'name|1': true                 // 返回true或false
        'name|min-max': true     // 随机生成一个布尔值,值为 value 的概率是 min / (min + max),值为 !value 的概率是 max / (min + max)。


    4、属性值是对象Object

        'name|min-max': {        // 从属性值 {} 中随机选取 min 到 max 个属性。
            "310000": "上海市",
            "320000": "江苏省",
            "330000": "浙江省",
            "340000": "安徽省"
        }         
        'name|count': {}             // 随机出对象中个数的对象属性


    5、属性值是数组 Array

        'name|1': [{}, {} ...]                 // 从属性值 [{}, {} ...] 中随机选取 1 个元素,作为最终值。
        'name|min-max': [{}, {} ...]     // 重复属性值 [{}, {} ...] 生成一个新数组,重复次数大于等于 min,小于等于 max。
        'name|count': [{}, {} ...]         // 重复属性值 [{}, {} ...] 生成一个新数组,重复次数为 count。


    6、属性值是函数function

        Mock.mock({
            'foo': 'Syntax Demo',
            'name': function() {
                return this.foo
            }
        })

        // 返回
        {
            "foo": "Syntax Demo",
            "name": "Syntax Demo"
        }


    7、属性值为RegExp

        Mock.mock({                
            'regexp': /[a-z][A-Z][0-9]/                // { "regexp": "sW7" }
        })


    8、Path 通过 @key来找到指定的值

        Mock.mock({
            "foo": "Hello",
            "nested": {
                "a": {
                    "b": {
                        "c": "Mock.js"
                    }
                }
            },
            "absolutePath": "@/foo @/nested/a/b/c"            // 这里输出 "absolutePath": "Hello Mock.js"
        })


六、Vue框架中使用Mcok.js

    mockData.js 定义mock接口和响应数据

        import Mock from 'mockjs'
        const Random = Mock.Random;    

        Mock.mock('/api/login', 'post', {
            data: {
                'username|1': Random.cfirst() + Random.clast(),
                'toKen': Random.id()
            },
            message: 'ok',
            status: '000000'
        })

    request.js    请求类

        import axios from 'axios'
        import {MessageBox, Notification, Loading} from 'element-ui'

        // 创建axios实例
        const request = axios.create({
            baseURL: '/api', // api的base_url
            timeout: 20000, // 请求超时时间 ms
        })

        // request 拦截器,在每个请求之前执行
        request.interceptors.request.use(config => {
            return config
        }, error => {    
            console.error(error)
            return Promise.reject(error)
        })

        // response 拦截器,在每个请求返回之后执行
        request.interceptors.response.use(
            response => {
                const res = response.data;
                return res;
            },
            error => {
                Notification.error({
                    title: '错误',
                    message: error.message,
                    duration: 10000
                })
                return Promise.reject(error)
            }
        )
        export default request

    main.js

        import mockData from '@/utils/mockData'

    login.vue

        request({
            url: '/login',
            method: 'post',
        }).then(od => {
            that.$notify.success({
                title: '成功',
                message: od.message
            });
            that.$router.push('/main')
        })

Rap

阿里的产品和mockjs,来模拟真实数据

https://github.com/thx/RAP/wiki/user_manual_cn#%E5%88%9B%E5%BB%BA%E9%A1%B9%E7%9B%AE

Rap使用

一、注册和登录Rap

    http://rapapi.org/

二、分为团队、业务线、项目

    1、查找你所在的团队

查找你所在的团队

2、进入你所在的团

查找你所在的团队

3、创建业务

查找你所在的团队

4、创建模块和使用

查找你所在的团队

三、其它技巧

    1、将一个接口的字段下所有字段copy到另一个接口

        选择要copy的字段名,到另一个接口粘贴后在control+Enter,就将所有的内容全部copy过来

查找你所在的团队

四、MOCK工具

    1、使用参数的变量
        请求字段
            page   

        响应字段
            pageResponse 字段  @mock=${page}        // 这里最终pageResponse的显示就是Request中page的输入

            或者写默认值   @mock=${page=100}    // 如果请求不写page值默认为100

    2、id自动加1

        变量名     备注
        id|+1     @mock=100        // 表示id从100开始,每次加1

    3、其它写法

        @mock=@DATE

        @mock=true

        @mock=function(){return 100 + Math.random()*100}

查找你所在的团队

| http://mockjs.com/examples.html