Vue实例中封装api接口的思路 在页面中用async,await调用方法请求

本文介绍了在大型项目中如何通过封装axios实例来优化接口调用,减少重复代码并提高开发效率。讲解了如何根据开发环境设置不同的基础URL,配置请求超时时间,以及如何实现请求和响应拦截器。同时提供了get和post请求的封装示例,并展示了在Vue组件中如何应用这些封装好的请求方法。
摘要由CSDN通过智能技术生成

一般我们写小型的项目是用不到封装axios实例

但是当我们写大型项目时 接口有时候多到有上百个接口,那我们在请求一次调用一次接口,接口上好多都是重复的,这个时候我们就可以封装axios实例,既节省了事件。有可以少些好多代码

首先我们要先安装axios

npm i axios --save

然后在vue项目中要创建两个文件夹api.js文件和http.js文件 当然文件名是自定义的
在这里插入图片描述
在http文件下http.js中要这样写

import axios from 'axios';
 
//环境的切换 环境指的就是开发环境和生产环境
//开发环境(development) 中用到的是测试接口
if (process.env.NODE_ENV == 'development') {
    axios.defaults.baseURL = 'http://120.53.31.103:84/'
}<br>//通过if判断处于开发环境还是生产环境
if (process.env.NODE_ENV == 'production') {
    axios.defaults.baseURL = 'https://www.365msmk.com/'
}
 
//设置请求超时的事件
axios.defaults.timeout = 5000;
// 请求拦截
axios.interceptors.request.use(
    config => {
        //获取轮播图要设置的头信息
        config.headers = { DeviceType: 'H5' }
        //可每次发送请求之间的逻辑处理 ,比如判断token
        return config
    }
)
// 响应拦截
axios.interceptors.response.use(
    response => {
        //如果返回的·状态码为200时,说明接口请求成功
        return response
    },
    error => {
        if (error.response.status) {
        }
    }
)
//设置get请求方式 用promise方式返回的实例来实现
export function get(url, params) {
    return new Promise((resolve, reject) => {
        axios.get(url, {
            params: params
        }).then(res => {
            resolve(res)
        }).catch(err => {
            reject(err)
        })
    })
}
 
//设置post请求方式 用promise方式返回的实例来实现
export function post(url, params) {
    return new Promise((resolve, reject) => {
        axios.post(url, params).then(res => {
            resolve(res.data)
        }).catch(err => {
            reject(err.data)
        })
    })
}

在api文件下api.js中要这样
首先要引入我们上个http.js文件中的两种请求方式post,get请求方式

import { post, get } from '../http/http.js'
 
//首页讲师和精选课堂  资讯数据的请求<br>//Indexlist是我们定义的函数名  用于·在后面调用方法
export function Indexlist() {<br>// return get('这里面写的是请求接口后面需要拼接的一部分')
    return get('api/app/recommend/appIndex')
}
//轮播图数据的请求
export function Indexbanner() {
    return get('api/app/banner')
}

在vue组件中要这样应用我们封装好的请求方法

import {Indexlist} from "../api/api.js";
  //首先要引用api文件中当时定义的方法名 这样也用到了解构赋值 ,提取api.js文件中我们要用的数据 
  
  async mounted() {
     //这里也可以用到async await语法
      var ids = this.$route.query.item;
      //接收上个页面传过来的id名
      var objlist = await Indexlist({ id: ids });
    console.log(objlist) 
    //打印我们请求那个接口,看下有数据没
    this.CommentList = [...objlist.data.list];
 //定义一个数组用扩展运算符进行赋值 console.log(this.CommentList);
 }
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值