步骤1下载axios

    1. //下载axios
    2. npm i axios
    3. //导入axios
    4. import axios from 'axios'
    5. //给axios配置基地址
    6. const request =axios.create({
    7. baseURL:"http://localhost:8000"
    8. })
    9. //导出axios
    10. export default request
    11. (export default 表示的是默认导出,一个页面只能有一个默认导出)

    封装完如何使用
    在需要发axios的页面导入这个封装好的axios
    import request from ‘上面封装好的axios的路径’
    image.png
    一般发送axios的都配置到api文件夹下面

    image.png

    只写export不写后面的default的话就是按需导出

    导入上图发送axios请求的页面 导入就需要按需导入
    import {getcomments} from ‘导入上面封装好的完整的请求’
    在页面中使用 就是导入以后把它当做一个函数来使用就行
    image.png

    二次封装
    本次封装的要求就是,不论是get请求还是post请求,都是如下图直接把数据传进去,不写params或者data(get请求是params传参,post请求是data传参)
    image.png
    下载 npm i axios

    1. import axios from 'axios'
    2. import store from '@/store'
    3. import router from '@/router'
    4. const instance = axios.create({
    5. baseURL: 'http://pcapi-xiaotuxian-front-devtest.itheima.net/',
    6. timeout: 5000
    7. })
    8. export default (url, method, paramsData) => {
    9. const key = method.toLowerCase() === 'get' ? 'params' : 'data'
    10. // ES6的动态属性
    11. return instance({
    12. url,
    13. method,
    14. [key]: paramsData
    15. })
    16. }
    17. // 请求拦截器
    18. instance.interceptors.request.use(config => {
    19. const token = store.state.user.profile.token
    20. if (token) {
    21. // 加token的格式不是固定的(只不过大多数都是这样的)
    22. config.headers.Authorization = `Bearer ${token}`
    23. }
    24. return config
    25. }, err => {
    26. return Promise.reject(err)
    27. }
    28. )
    29. // 响应拦截器
    30. instance.interceptors.response.use(
    31. //剥离无效的数据,数据都被data包着呢,只需要data里面的数据返回,其他的数据不需要
    32. response => response.data,
    33. error => {
    34. if (error.response.status === 401) {
    35. console.log('token错误')
    36. store.commit('user/setUser', {})
    37. //currentRoute获取当前路由信息
    38. router.push('/login?return_url=' + encodeURIComponent(router.currentRoute.value.fullPath))
    39. }
    40. return Promise.reject(error)
    41. }
    42. )