接口的封装

279 阅读2分钟

封装接口

一封装接口

在src目录下创建ustils(工具)文件夹 然后创建request.js

import axios from 'axios'

const request = axios.create({
  // 指定请求的根路径
  baseURL: 'https://www.escook.cn'
})

export default request

在src目录下创建api文件夹 创建arricleAOI.js

// 文章相关的API接口 都封装到这个模块中
import request from '@/ustils/request.js'

// 向外按需导出一个API函数
export const getArticleListAPI = function (_page, _limit) {
  return request.get('/articles', {
    params: {
      _page,
      _limit
    }
  })
}

这样就可以直接调用

// 按需导入API接口
import { getArticleListAPI } from '@/api/arricleAPI.js'

 created () {
    this.inituserdata()
  },
methods: {
    async inituserdata () {
      const { data: res } = await getArticleListAPI(this.page, this.limit)
      console.log(res)
    }
  }

封装接口二

新建api文件夹 创建request.js 文件

import axios from 'axios'

// 对于axios二次封装

// 1.利用axios对象的方法 create 去创建一个axios实例
// request就是axios 只不过稍微配置一下
const requests = axios.create({
  // 配置对象
  // 基础路径 发请求的时候 路径当中会出现api
  baseURL: '/api',
  // 代表请求超时的时间5s
  timeout: 5000
})
// 请求拦截器 在发请求之前 请求拦截器 可以检测到 可以在请求发出去之前做一些事情
requests.interceptors.request.use((config) => {
  // config 配置对象 对象里面有一个属性很重要 header请求头
  return config
})
// 相应拦截器
requests.interceptors.response.use((res) => {
  // 成功的回调函数 服务器相应的数据回来以后 相应拦截器可以检测到 可以做一些事情
  return res.data
}, (error) => {
// 响应失败的回调函数
  return Promise.reject(new Error('faile'))
})
// 对外暴露
export default requests

再创建index.js

// 当前这个模块 API进行统一管理
import requests from "./request";

// 三级联动的接口
//  /api/product/getBaseCategoryList  get请求 无参数
// 发请求 axios发请求 结果返回 Promise对象
export const reqCategoryList=()=> requests({url:'/api/product/getBaseCategoryList',methods:'get'} )

解决跨域 在vue.config.js文件中 写下列代码

// 代理跨域
  devServer:{
    proxy:{
      '/api':{
        target:'http://gmall-h5-api.atguigu.cn',
        pathRewrite:{'^/api':''}
      }
    }
  }

nprogress进度条

npm i nprogress -S 先执行 安装 在request.js中添加 二次封装axios中添加

// 引入进度条
import nprogress from 'nprogress'
// 引入进度条的样式 
import 'nprogress/nprogress.css'
// start 进度条开始 done进度条结束

// 请求拦截器 在发请求之前 请求拦截器 可以检测到 可以在请求发出去之前做一些事情
requests.interceptors.request.use((config) => {
  // config 配置对象 对象里面有一个属性很重要 header请求头
  // 进度条开始动
  nprogress.start();
  return config
})
/ 响应拦截器
requests.interceptors.response.use((res) => {
  // 成功的回调函数 服务器相应的数据回来以后 响应拦截器可以检测到 可以做一些事情
  // 进度条结束
  nprogress.done()
  return res.data
}, (error) => {
// 响应失败的回调函数
  return Promise.reject(new Error('faile'))
})