• vue使用axios,mock请求假数据,脱离后端的限制!!!这一篇就够了


    vue使用axios请求本地json文件

    vue使用axios+mock请求本地json文件(axios封装)

     先讲讲思路原理吧 

     (0) 安装mock-js axios  这一步是必然的

    (1)api下的axios是对请求和相应的简单封装

    1. import axios from 'axios';
    2. const service =axios.create({
    3. timeout:3000
    4. })
    5. //拦截器:
    6. service.interceptors.request.use(
    7. config=>{
    8. return config
    9. },
    10. err=>{
    11. console.log(err);
    12. return Promise.reject(err);
    13. }
    14. )
    15. //z相应拦截器:
    16. service.interceptors.response.use(
    17. response=>{
    18. return response
    19. },
    20. err=>{
    21. console.log(err);
    22. return Promise.reject(err);
    23. }
    24. )
    25. export default service;

    2 request1  request12 request3 就是我们的请求接口文件,对应不同的模块,会有不同的接口

    比如   request1,是业务单元接口

    1. import axios from './axios'
    2. // 业务单元接口
    3. // get请求
    4. export function getListAPI() {
    5. return axios.get(`/home/getData`)
    6. }
    7. // post请求
    8. export function postListAPI(params) {
    9. return axios.post(`/login/promise/getMenu`,
    10. params)
    11. }

    3先建mock文件夹 以及下面建moke1(对应上面的request1)业务数据,moke2(对应上面的request2)业务数据,moke3(对应上面的request3)业务数据,

    mock1.js如下

    1. import Mock from 'mockjs';
    2. export default{
    3. getHomeData:()=>{
    4. return {
    5. code:2000,
    6. data:{
    7. videoData:[
    8. {name:"SpringBoot",value:Mock.Random.float(1000,10000,0,2)},
    9. {name:"vue",value:Mock.Random.float(1000,10000,0,2)},
    10. {name:"java",value:Mock.Random.float(1000,10000,0,2)},
    11. {name:"php",value:Mock.Random.float(1000,10000,0,2)},
    12. {name:"node",value:Mock.Random.float(1000,10000,0,2)},
    13. {name:"c++",value:Mock.Random.float(1000,10000,0,2)}
    14. ]
    15. }
    16. }
    17. },
    18. gettableData:()=>{
    19. return {
    20. code:2000,
    21. data:{
    22. Data:[
    23. {name:"SpringBoot",buy:Mock.Random.float(1000,10000,0,2),today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
    24. {name:"vue",buy:Mock.Random.float(1000,10000,0,2),today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
    25. {name:"java",buy:Mock.Random.float(1000,10000,0,2),today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
    26. {name:"php",buy:Mock.Random.float(1000,10000,0,2),today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
    27. {name:"node",buy:Mock.Random.float(1000,10000,0,2),today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
    28. {name:"c++",buy:Mock.Random.float(1000,10000,0,2),today:Mock.Random.float(1000,10000,0,2),al:Mock.Random.float(1000,10000,0,2)}
    29. ]
    30. }
    31. }
    32. },
    33. gettableDataLine:()=>{
    34. return {
    35. code:2000,
    36. data:{
    37. Data:[
    38. {vue:Mock.Random.float(1000,10000,0,2),java:Mock.Random.float(1000,10000,0,2),php:Mock.Random.float(1000,10000,0,2),node:Mock.Random.float(1000,10000,0,2)},
    39. {vue:Mock.Random.float(1000,10000,0,2),java:Mock.Random.float(1000,10000,0,2),php:Mock.Random.float(1000,10000,0,2),node:Mock.Random.float(1000,10000,0,2)},
    40. {vue:Mock.Random.float(1000,10000,0,2),java:Mock.Random.float(1000,10000,0,2),php:Mock.Random.float(1000,10000,0,2),node:Mock.Random.float(1000,10000,0,2)},
    41. {vue:Mock.Random.float(1000,10000,0,2),java:Mock.Random.float(1000,10000,0,2),php:Mock.Random.float(1000,10000,0,2),node:Mock.Random.float(1000,10000,0,2)},
    42. {vue:Mock.Random.float(1000,10000,0,2),java:Mock.Random.float(1000,10000,0,2),php:Mock.Random.float(1000,10000,0,2),node:Mock.Random.float(1000,10000,0,2)},
    43. {vue:Mock.Random.float(1000,10000,0,2),java:Mock.Random.float(1000,10000,0,2),php:Mock.Random.float(1000,10000,0,2),node:Mock.Random.float(1000,10000,0,2)}
    44. ]
    45. }
    46. }
    47. },
    48. gettableDataBar:()=>{
    49. return {
    50. code:2000,
    51. data:{
    52. Data:[
    53. {name:"SpringBoot",today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
    54. {name:"vue",today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
    55. {name:"java",today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
    56. {name:"php",today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
    57. {name:"node",today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
    58. {name:"c++",today:Mock.Random.float(1000,10000,0,2),al:Mock.Random.float(1000,10000,0,2)}
    59. ]
    60. }
    61. }
    62. },
    63. gettableDataPie:()=>{
    64. return {
    65. code:2000,
    66. data:{
    67. Data:[
    68. {name:"SpringBoot",all:Mock.Random.float(1000,10000,0,2)},
    69. {name:"vue",all:Mock.Random.float(1000,10000,0,2)},
    70. {name:"java",all:Mock.Random.float(1000,10000,0,2)},
    71. {name:"php",all:Mock.Random.float(1000,10000,0,2)},
    72. {name:"node",all:Mock.Random.float(1000,10000,0,2)},
    73. {name:"c++",al:Mock.Random.float(1000,10000,0,2)}
    74. ]
    75. }
    76. }
    77. }
    78. }

    mock2.js如下

    1. import Mock from 'mockjs';
    2. export default{
    3. getUserData:()=>{
    4. return {
    5. code:2000,
    6. data:{
    7. videoData:[
    8. {name:"SpringBoot",value:Mock.Random.float(1000,10000,0,2)},
    9. {name:"vue",value:Mock.Random.float(1000,10000,0,2)},
    10. {name:"java",value:Mock.Random.float(1000,10000,0,2)},
    11. {name:"php",value:Mock.Random.float(1000,10000,0,2)},
    12. {name:"node",value:Mock.Random.float(1000,10000,0,2)},
    13. {name:"c++",value:Mock.Random.float(1000,10000,0,2)}
    14. ]
    15. }
    16. }
    17. },
    18. delData:()=>{
    19. return {
    20. code:2000,
    21. data:{
    22. Data:[
    23. {name:"SpringBoot",buy:Mock.Random.float(1000,10000,0,2),today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
    24. {name:"vue",buy:Mock.Random.float(1000,10000,0,2),today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
    25. {name:"java",buy:Mock.Random.float(1000,10000,0,2),today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
    26. {name:"php",buy:Mock.Random.float(1000,10000,0,2),today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
    27. {name:"node",buy:Mock.Random.float(1000,10000,0,2),today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
    28. {name:"c++",buy:Mock.Random.float(1000,10000,0,2),today:Mock.Random.float(1000,10000,0,2),al:Mock.Random.float(1000,10000,0,2)}
    29. ]
    30. }
    31. }
    32. },
    33. addData:()=>{
    34. return {
    35. code:2000,
    36. data:{
    37. Data:[
    38. {vue:Mock.Random.float(1000,10000,0,2),java:Mock.Random.float(1000,10000,0,2),php:Mock.Random.float(1000,10000,0,2),node:Mock.Random.float(1000,10000,0,2)},
    39. {vue:Mock.Random.float(1000,10000,0,2),java:Mock.Random.float(1000,10000,0,2),php:Mock.Random.float(1000,10000,0,2),node:Mock.Random.float(1000,10000,0,2)},
    40. {vue:Mock.Random.float(1000,10000,0,2),java:Mock.Random.float(1000,10000,0,2),php:Mock.Random.float(1000,10000,0,2),node:Mock.Random.float(1000,10000,0,2)},
    41. {vue:Mock.Random.float(1000,10000,0,2),java:Mock.Random.float(1000,10000,0,2),php:Mock.Random.float(1000,10000,0,2),node:Mock.Random.float(1000,10000,0,2)},
    42. {vue:Mock.Random.float(1000,10000,0,2),java:Mock.Random.float(1000,10000,0,2),php:Mock.Random.float(1000,10000,0,2),node:Mock.Random.float(1000,10000,0,2)},
    43. {vue:Mock.Random.float(1000,10000,0,2),java:Mock.Random.float(1000,10000,0,2),php:Mock.Random.float(1000,10000,0,2),node:Mock.Random.float(1000,10000,0,2)}
    44. ]
    45. }
    46. }
    47. },
    48. editData:()=>{
    49. return {
    50. code:2000,
    51. data:{
    52. Data:[
    53. {name:"SpringBoot",today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
    54. {name:"vue",today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
    55. {name:"java",today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
    56. {name:"php",today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
    57. {name:"node",today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
    58. {name:"c++",today:Mock.Random.float(1000,10000,0,2),al:Mock.Random.float(1000,10000,0,2)}
    59. ]
    60. }
    61. }
    62. },
    63. removeData:()=>{
    64. return {
    65. code:2000,
    66. data:{
    67. Data:[
    68. {name:"SpringBoot",all:Mock.Random.float(1000,10000,0,2)},
    69. {name:"vue",all:Mock.Random.float(1000,10000,0,2)},
    70. {name:"java",all:Mock.Random.float(1000,10000,0,2)},
    71. {name:"php",all:Mock.Random.float(1000,10000,0,2)},
    72. {name:"node",all:Mock.Random.float(1000,10000,0,2)},
    73. {name:"c++",al:Mock.Random.float(1000,10000,0,2)}
    74. ]
    75. }
    76. }
    77. }
    78. }

    mock3.js如下

    1. export default{
    2. getMenu:(config)=>{
    3. const {username,password}=JSON.parse(config.body);
    4. if(username==='admin'&&password==="123456"){
    5. return {
    6. code:2000,
    7. data:{
    8. menu:[
    9. {
    10. path:"/",
    11. name:'home',
    12. label:"首页",
    13. icon:'s-home',
    14. url:'Home/Home'
    15. },
    16. {
    17. path:"/video",
    18. name:'video',
    19. label:"视频管理",
    20. icon:'s-home',
    21. url:'VideoManager/VideoManager'
    22. },
    23. {
    24. path:"/user",
    25. name:'user',
    26. label:"用户管理",
    27. icon:'s-home',
    28. url:'User/User'
    29. }
    30. ]
    31. }
    32. }
    33. }
    34. if(username==='admin1'&&password==="123456"){
    35. return {
    36. code:2000,
    37. data:{
    38. menu:[
    39. {
    40. path:"/",
    41. name:'home',
    42. label:"首页",
    43. icon:'s-home',
    44. url:'Home/Home'
    45. },
    46. {
    47. path:"/video",
    48. name:'video',
    49. label:"视频管理",
    50. icon:'s-home',
    51. url:'VideoManager/VideoManager'
    52. },
    53. {
    54. path:"/user",
    55. name:'user',
    56. label:"用户管理",
    57. icon:'s-home',
    58. url:'User/User'
    59. },
    60. {
    61. label:"页面",
    62. children:[
    63. {
    64. path:"/page1",
    65. label:"页面1",
    66. name:"page1",
    67. url:'Other/OtherOne'
    68. },
    69. {
    70. path:"/page2",
    71. label:"页面2",
    72. name:"page2",
    73. url:'Other/OtherTwo'
    74. }
    75. ]
    76. }
    77. ]
    78. }
    79. }
    80. }
    81. },
    82. }

    然后 mock1 mock2  mock3 统一导入到mock.js

    1. import Mock from 'mockjs';
    2. import HomeApi from './mock1';
    3. import UserApi from './mock2';
    4. import loginApi from './mock3';
    5. //设置岩石200-2000ms
    6. Mock.setup({
    7. timeout:"200-2000",
    8. //timeout:400
    9. })
    10. //拦截的是home/getData
    11. //Mock.mock(/\/home\/getData/,'get',HomeApi.getHomeData);
    12. Mock.mock('/home/getData','get',HomeApi.getHomeData);
    13. Mock.mock('/home/gettableData','get',HomeApi.gettableData);
    14. Mock.mock('/home/echart/line','get',HomeApi.gettableDataLine);
    15. Mock.mock('/home/echart/bar','get',HomeApi.gettableDataBar);
    16. Mock.mock('/home/echart/pie','get',HomeApi.gettableDataPie);
    17. //user
    18. Mock.mock('/user/getUserData','get',UserApi.getUserData);
    19. Mock.mock('/user/echart/bar','get',UserApi.delData);
    20. Mock.mock('/user/echart/pie','get',UserApi.removeData);
    21. Mock.mock('/user/gettableData','post',UserApi.editData);
    22. Mock.mock('/user/echart/line','post',UserApi.addData);
    23. //login
    24. Mock.mock('/login/promise/getMenu','post',loginApi.getMenu);

    4 main.js 引入mock

    require("./mock/mock")

    5 页面使用

    1. /* eslint-disable vue/no-async-in-computed-properties */
    2. <template>
    3. <div class="home">
    4. <div class="content">
    5. <el-button @click=clickLogin>login post接口el-button>
    6. div>
    7. div>
    8. template>
    9. <script>
    10. import {getListAPI,postListAPI} from '../api/request1'
    11. export default {
    12. components:{},
    13. data() {
    14. return {
    15. ruleForm1: {
    16. phone: "",
    17. code: "",
    18. },
    19. };
    20. },
    21. computed: {
    22. },
    23. mounted() {
    24. this.getData()
    25. },
    26. methods: {
    27. clickLogin(){
    28. const params ={
    29. username:'admin',password:"123456"
    30. }
    31. postListAPI(params)
    32. .then((res)=>{console.log(res)})
    33. .catch((res)=>{console.log(res)})
    34. },
    35. getData(){
    36. getListAPI()
    37. .then((res)=>{console.log(res)})
    38. .catch((res)=>{console.log(res)})
    39. }
    40. },
    41. };
    42. script>
    43. <style lang="scss" scoped>
    44. @import "./object.scss";
    45. style>

    核心关键  就是mock会劫持axios的请求路径,如果匹配,就会返回mock的数据

    核心关键  就是mock会劫持axios的请求路径,如果匹配,就会返回mock的数据

    核心关键  就是mock会劫持axios的请求路径,如果匹配,就会返回mock的数据

     

    小编不易,大侠们点点关注吧 抱拳!

  • 相关阅读:
    Kotlin编程实战——类与对象(05)
    酷开科技丨大屏购物买买买,酷开系统助力网购模式再升级
    ElasticSearch - ​开启搜索的新境界
    力扣(LeetCode)775. 全局倒置与局部倒置(C++)
    Python filter 用法
    论文解析[4] UNET 3+: A FULL-SCALE CONNECTED UNET FOR MEDICAL IMAGE SEGMENTATION
    Positive Technologies 在迪拜宣布与地区网络安全解决方案提供商开展合作
    每日练习------实现双色球的彩票功能。规则:从36个红球中随机选择不重复的6个数,从15个篮球中随机选择1个组成一注彩票。可以选择买多注。
    CSS3笔记
    网络安全项目简介
  • 原文地址:https://blog.csdn.net/jieweiwujie/article/details/126061564