• Vue的路由拦截与axios的封装


    一丶首先我们先创建api与utils两个文件夹

    二丶api文件夹里面新建文件api.js

     1 import request from "../utils/http"
     2 import qs from "qs"
     3 
     4 //getdata是我自己封装的,名字可以随意写,按照自己的习惯写即可.
     5 export function getdata(parmas){
     6     return request({
     7         //url写暴露出来的接口
     8         url:"https://blogs.zdldove.top/Home/Apis/listWithPage",
     9         //method是请求的方式
    10         method:"post",
    11         //注意:如果我们请求方式是post,那么下面这一行需要转换一下,具体看需求,如果是get请求直接写一个parmas即可
    12         data:qs.stringify(parmas)
    13     })
    14 }

    三丶下面写utils文件夹里面的内容

      1创建http.js文件,代码如下

      

     1 import axios from "./request"
     2 let baseURL = ""
     3 
     4 let ajax = function(config){
     5     config.url = baseURL + config.url
     6 
     7 
     8   return new Promise((resolve,reject)=>{
     9       var options = {
    10           method: config.method,
    11           headers: {
    12               'Content-Type': 'application/x-www-form-urlencoded',
    13           },
    14           data: config.data
    15       }
    16       axios(config.url, options).then((res)=>{
    17           resolve(res)
    18       })
    19   })
    20 }
    21 
    22 export default ajax;

      2创建request.js文件,代码如下

     1 import axios from "axios"
     2 import router from "../router"
     3 
     4 //axios配置
     5 
     6 axios.defaults.timeout = 5000
     7 // axios.defaults.baseURL = ""
     8 axios.defaults.baseURL = "http://localhost:8080/"  //地址
     9 //http request 拦截器
    10 
    11 axios.interceptors.request.use(
    12     config => {
    13         return config
    14     },
    15     err => {
    16         return Promise.reject(err)
    17     }
    18 )
    19 
    20 
    21  //http response 拦截器
    22 
    23  axios.interceptors.response.use(
    24      response => {
    25          return response
    26      },
    27      error => {
    28          if(error.response) {
    29             switch (error.response.status){ 
    30                 case 404:
    31                         localStorage.removeItem('username');
    32                         router.currentRoute.path !== "/" &&
    33                         router.replace({
    34                             path:"/"
    35                         })
    36             }
    37          }
    38          return Promise.reject(error.response.data)
    39      }
    40  )
    41  export default axios

    四丶页面请求数据,代码如下

     1 <template>
     2   <div class="home">
     3      {{list}}
     4   </div>
     5 </template>
     6 
     7 <script>
     8 import {getdata} from "../api/api"
     9 export default {
    10          data(){
    11              return{
    12                  list:[],
    13                 
    14              }
    15          },
    16         created(){
    17             getdata().then((res)=>{
    18                 this.list=res
    19             })
    20         },
    21         methods:{
    22             
    23         }
    24 }
    25 </script>

    由于能力有限,上面是个人的全部理解.

  • 相关阅读:
    可空类型转换为不可空的普通类型
    如何使用AspNetPager分页控件和ObjectDataSource控件进行分页
    TFS映射后丢失引用的问题
    (很好用)JS时间控件实现日期的多选
    取两个日期之间的非工作日的天数(指的是周六、周日)
    在日期格式化的时候提示错误:Tostring没有采用一个参数的重载
    Linq返回的集合类型不是已有的表格类型时的写法(谨记:列表的时候用)
    系统缓存全解析6:数据库缓存依赖
    实现文本框动态限制字数的实现(好方法)
    实现GridView内容循环滚动
  • 原文地址:https://www.cnblogs.com/LC123456/p/12093093.html
Copyright © 2020-2023  润新知