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

先讲讲思路原理吧
(0) 安装mock-js axios 这一步是必然的
(1)api下的axios是对请求和相应的简单封装
- import axios from 'axios';
- const service =axios.create({
- timeout:3000
- })
- //拦截器:
- service.interceptors.request.use(
- config=>{
- return config
- },
- err=>{
- console.log(err);
- return Promise.reject(err);
- }
- )
- //z相应拦截器:
- service.interceptors.response.use(
- response=>{
- return response
- },
- err=>{
- console.log(err);
- return Promise.reject(err);
- }
- )
- export default service;
2 request1 request12 request3 就是我们的请求接口文件,对应不同的模块,会有不同的接口
比如 request1,是业务单元接口

-
- import axios from './axios'
-
- // 业务单元接口
- // get请求
- export function getListAPI() {
- return axios.get(`/home/getData`)
- }
- // post请求
- export function postListAPI(params) {
- return axios.post(`/login/promise/getMenu`,
- params)
- }
3先建mock文件夹 以及下面建moke1(对应上面的request1)业务数据,moke2(对应上面的request2)业务数据,moke3(对应上面的request3)业务数据,
mock1.js如下
- import Mock from 'mockjs';
- export default{
- getHomeData:()=>{
- return {
- code:2000,
- data:{
- videoData:[
- {name:"SpringBoot",value:Mock.Random.float(1000,10000,0,2)},
- {name:"vue",value:Mock.Random.float(1000,10000,0,2)},
- {name:"java",value:Mock.Random.float(1000,10000,0,2)},
- {name:"php",value:Mock.Random.float(1000,10000,0,2)},
- {name:"node",value:Mock.Random.float(1000,10000,0,2)},
- {name:"c++",value:Mock.Random.float(1000,10000,0,2)}
- ]
- }
- }
- },
- gettableData:()=>{
- return {
- code:2000,
- data:{
- Data:[
- {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)},
- {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)},
- {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)},
- {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)},
- {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)},
- {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)}
-
- ]
- }
- }
- },
- gettableDataLine:()=>{
- return {
- code:2000,
- data:{
- Data:[
- {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)},
- {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)},
- {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)},
- {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)},
- {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)},
- {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)}
- ]
- }
- }
- },
- gettableDataBar:()=>{
- return {
- code:2000,
- data:{
- Data:[
- {name:"SpringBoot",today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
- {name:"vue",today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
- {name:"java",today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
- {name:"php",today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
- {name:"node",today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
- {name:"c++",today:Mock.Random.float(1000,10000,0,2),al:Mock.Random.float(1000,10000,0,2)}
-
- ]
- }
- }
- },
- gettableDataPie:()=>{
- return {
- code:2000,
- data:{
- Data:[
- {name:"SpringBoot",all:Mock.Random.float(1000,10000,0,2)},
- {name:"vue",all:Mock.Random.float(1000,10000,0,2)},
- {name:"java",all:Mock.Random.float(1000,10000,0,2)},
- {name:"php",all:Mock.Random.float(1000,10000,0,2)},
- {name:"node",all:Mock.Random.float(1000,10000,0,2)},
- {name:"c++",al:Mock.Random.float(1000,10000,0,2)}
-
- ]
- }
- }
- }
- }
mock2.js如下
- import Mock from 'mockjs';
- export default{
- getUserData:()=>{
- return {
- code:2000,
- data:{
- videoData:[
- {name:"SpringBoot",value:Mock.Random.float(1000,10000,0,2)},
- {name:"vue",value:Mock.Random.float(1000,10000,0,2)},
- {name:"java",value:Mock.Random.float(1000,10000,0,2)},
- {name:"php",value:Mock.Random.float(1000,10000,0,2)},
- {name:"node",value:Mock.Random.float(1000,10000,0,2)},
- {name:"c++",value:Mock.Random.float(1000,10000,0,2)}
- ]
- }
- }
- },
- delData:()=>{
- return {
- code:2000,
- data:{
- Data:[
- {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)},
- {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)},
- {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)},
- {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)},
- {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)},
- {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)}
-
- ]
- }
- }
- },
- addData:()=>{
- return {
- code:2000,
- data:{
- Data:[
- {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)},
- {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)},
- {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)},
- {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)},
- {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)},
- {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)}
- ]
- }
- }
- },
- editData:()=>{
- return {
- code:2000,
- data:{
- Data:[
- {name:"SpringBoot",today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
- {name:"vue",today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
- {name:"java",today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
- {name:"php",today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
- {name:"node",today:Mock.Random.float(1000,10000,0,2),all:Mock.Random.float(1000,10000,0,2)},
- {name:"c++",today:Mock.Random.float(1000,10000,0,2),al:Mock.Random.float(1000,10000,0,2)}
-
- ]
- }
- }
- },
- removeData:()=>{
- return {
- code:2000,
- data:{
- Data:[
- {name:"SpringBoot",all:Mock.Random.float(1000,10000,0,2)},
- {name:"vue",all:Mock.Random.float(1000,10000,0,2)},
- {name:"java",all:Mock.Random.float(1000,10000,0,2)},
- {name:"php",all:Mock.Random.float(1000,10000,0,2)},
- {name:"node",all:Mock.Random.float(1000,10000,0,2)},
- {name:"c++",al:Mock.Random.float(1000,10000,0,2)}
-
- ]
- }
- }
- }
- }
mock3.js如下
-
- export default{
- getMenu:(config)=>{
- const {username,password}=JSON.parse(config.body);
- if(username==='admin'&&password==="123456"){
- return {
- code:2000,
- data:{
- menu:[
- {
- path:"/",
- name:'home',
- label:"首页",
- icon:'s-home',
- url:'Home/Home'
- },
- {
- path:"/video",
- name:'video',
- label:"视频管理",
- icon:'s-home',
- url:'VideoManager/VideoManager'
- },
- {
- path:"/user",
- name:'user',
- label:"用户管理",
- icon:'s-home',
- url:'User/User'
- }
- ]
- }
- }
- }
- if(username==='admin1'&&password==="123456"){
- return {
- code:2000,
- data:{
- menu:[
- {
- path:"/",
- name:'home',
- label:"首页",
- icon:'s-home',
- url:'Home/Home'
- },
- {
- path:"/video",
- name:'video',
- label:"视频管理",
- icon:'s-home',
- url:'VideoManager/VideoManager'
- },
- {
- path:"/user",
- name:'user',
- label:"用户管理",
- icon:'s-home',
- url:'User/User'
- },
- {
- label:"页面",
- children:[
- {
- path:"/page1",
- label:"页面1",
- name:"page1",
- url:'Other/OtherOne'
- },
- {
- path:"/page2",
- label:"页面2",
- name:"page2",
- url:'Other/OtherTwo'
- }
- ]
- }
- ]
- }
- }
- }
- },
- }
然后 mock1 mock2 mock3 统一导入到mock.js

- import Mock from 'mockjs';
- import HomeApi from './mock1';
- import UserApi from './mock2';
- import loginApi from './mock3';
- //设置岩石200-2000ms
- Mock.setup({
- timeout:"200-2000",
- //timeout:400
- })
-
- //拦截的是home/getData
- //Mock.mock(/\/home\/getData/,'get',HomeApi.getHomeData);
- Mock.mock('/home/getData','get',HomeApi.getHomeData);
- Mock.mock('/home/gettableData','get',HomeApi.gettableData);
- Mock.mock('/home/echart/line','get',HomeApi.gettableDataLine);
- Mock.mock('/home/echart/bar','get',HomeApi.gettableDataBar);
- Mock.mock('/home/echart/pie','get',HomeApi.gettableDataPie);
-
- //user
- Mock.mock('/user/getUserData','get',UserApi.getUserData);
- Mock.mock('/user/echart/bar','get',UserApi.delData);
- Mock.mock('/user/echart/pie','get',UserApi.removeData);
- Mock.mock('/user/gettableData','post',UserApi.editData);
- Mock.mock('/user/echart/line','post',UserApi.addData);
-
- //login
- Mock.mock('/login/promise/getMenu','post',loginApi.getMenu);
4 main.js 引入mock
require("./mock/mock")

5 页面使用
- /* eslint-disable vue/no-async-in-computed-properties */
- <template>
- <div class="home">
- <div class="content">
- <el-button @click=clickLogin>login post接口el-button>
-
- div>
- div>
- template>
- <script>
- import {getListAPI,postListAPI} from '../api/request1'
- export default {
- components:{},
- data() {
- return {
- ruleForm1: {
- phone: "",
- code: "",
- },
-
- };
- },
- computed: {
-
- },
- mounted() {
- this.getData()
- },
- methods: {
- clickLogin(){
- const params ={
- username:'admin',password:"123456"
- }
- postListAPI(params)
- .then((res)=>{console.log(res)})
- .catch((res)=>{console.log(res)})
- },
- getData(){
- getListAPI()
- .then((res)=>{console.log(res)})
- .catch((res)=>{console.log(res)})
- }
- },
- };
- script>
- <style lang="scss" scoped>
- @import "./object.scss";
- style>

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


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