Vue实例中封装api接口的思路 在页面中用async,await调用方法请求
一般我们写小型的项目是用不到封装axios实例
但是当我们写大型项目时 接口有时候多到有上百个接口,那我们在请求一次调用一次接口,接口上好多都是重复的,这个时候我们就可以封装axios实例,既节省了事件。有可以少些好多代码
首先我们要先安装axios
npm i axios --save
然后在vue项目中要创建两个文件夹api文件和http文件 当然文件名是自定义的

在http文件下http.js中要这样写
import axios from 'axios'; //环境的切换 环境指的就是开发环境和生产环境
//开发环境(development) 中用到的是测试接口
if (process.env.NODE_ENV == 'development') {
axios.defaults.baseURL = 'http://120.53.31.103:84/'
}
//通过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'
//首页讲师和精选课堂 资讯数据的请求
//Indexlist是我们定义的函数名 用于·在后面调用方法
export function Indexlist() {
// return get('这里面写的是请求接口后面需要拼接的一部分')
return get('api/app/recommend/appIndex')
}
//轮播图数据的请求
export function Indexbanner() {
return get('api/app/banner')
}
在vue组件中要这样应用
1 import {Indexlist} from "../api/api.js";
2 //首先要引用api文件中当时定义的方法名 这样也用到了解构赋值 ,提取api.js文件中我们要用的数据
3
4 async mounted() {
5 //这里也可以用到async await语法
6 var ids = this.$route.query.item;
7 //接收上个页面传过来的id名
8 var objlist = await Indexlist({ id: ids });
9
10 console.log(objlist)
11 //打印我们请求那个接口,看下有数据没
12
13 this.CommentList = [...objlist.data.list];
14 //定义一个数组用扩展运算符进行赋值 console.log(this.CommentList);
15 }
16
Vue实例中封装api接口的思路 在页面中用async,await调用方法请求的更多相关文章
- 分享我在 vue 项目中关于 api 请求的一些实现及项目框架
本文主要简单分享以下四点 如何使用 axios 如何隔离配置 如何模拟数据 分享自己的项目框架 本文主要目的为以下三点 希望能够帮到一些人 希望能够得到一些建议 奉上一个使用Vue的模板框架 我只是把 ...
- Vue 实例中的生命周期钩子
Vue 框架的入口就是 Vue 实例,其实就是框架中的 view model ,它包含页面中的业务处理逻辑.数据模型等,它的生命周期中有多个事件钩子,让我们在控制整个Vue实例的过程时更容易形成好的逻 ...
- 从App业务逻辑中提炼API接口
2.1 从App业务逻辑中提炼API接口 业务逻辑思维导图 功能-业务逻辑思维导图 基本功能模块关系 功能模块接口UML(设计出API) 在设计稿标注API 编写API文档 2.2 设计API的要点 ...
- Vue实例 中的常用配置项
创建Vue实例时,使用 new Vue ({//配置项}) 或者 组件定义中 export default {//配置项},所有的Vue组件都是Vue实例,并且接受相同的选项对象(一些根实例特有的选项 ...
- 详解Vue 实例中的生命周期钩子
Vue 框架的入口就是 Vue 实例,其实就是框架中的 view model ,它包含页面中的业务处理逻辑.数据模型等,它的生命周期中有多个事件钩子,让我们在控制整个Vue实例的过程时更容易形成好的逻 ...
- vue 数组中嵌套的对象添加新属性--页面更新
vue 数组中嵌套的对象添加新属性--页面更新:https://www.jianshu.com/p/8f0e5bb13735
- C# 中 async/await 调用传统 Begin/End 异步方法
最近在改进园子的图片上传程序,希望实现用户上传图片时同时将图片文件保存在三个地方:1)服务器本地硬盘:2)又拍云:3)阿里云OSS.并且在保存时使用异步操作. 对于异步保存到本地硬盘,只需用 Stea ...
- 如何在项目中封装api
一般在项目中,会有很多的api请求,无论在vue,angular,还是react中都应该把接口封装起来,方便后期的维护. 1.新建一个api文件 我们可以在项目的分目录下创建一个api文件夹,在这里面 ...
- vue项目,封装api并使用
封装api index.js let uploadBase = '' if(process.env.NODE_ENV === 'production'){ uploadBase = 'https:// ...
随机推荐
- vue 中后台 列表的增删改查同一解决方案
查看 & 查询 常⻅业务列表⻚都是由 搜索栏 和 数据列表 组成. 其中: 搜索栏包含 搜索条件 . 新增 . 批量xx . 导出 等对 数据列表 全局操作功能项. 数据列表包含 分⻚ 和每条 ...
- GitLab集成kubernetes
创建GitLab源码项目并上传示例代码 1. 创建GitLab源码项目 本示例中创建的GitLab源码项目地址为:https://gitee.com/SunHarvey/helloworld_java ...
- TypeScript之父:JS不是竞争对手,曾在惧怕开源的微软文化中艰难求生
开源的 TypeScript 也曾在微软内部遭到抵制,但如今 TypeScript 已经成为 Web 应用构建的主流语言. 微软的开源编程语言 TypeScript 是 JavaScript 的一 ...
- Apollo系列(一):分布式配置中心Apollo安装(Linux、Docker)
一.介绍 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置管理 ...
- 渗透测试之信息收集(Web安全攻防渗透测试实战指南第1章)
收集域名信息 获得对象域名之后,需要收集域名的注册信息,包括该域名的DNS服务器信息和注册人的联系方式等. whois查询 对于中小型站点而言,域名所有人往往就是管理员,因此得到注册人的姓名和邮箱信息 ...
- 跟我一起学.NetCore之Swagger让前后端不再烦恼及界面自定义
前言 随着前后端分离开发模式的流行,接口对接.联调成为常事,前端同事会经常问:我需要调哪个接口?这个接口数据格式是啥?条件都传啥? 对于一些紧急接口可能会采取沟通对接,然后补文档,其他的都会回一句:看 ...
- Spring Cloud系列(二):Eureka应用详解
一.注册中心 1.注册中心演变过程 2.注册中心必备功能 ① 服务的上线 ② 服务的下线 ③ 服务的剔除 ④ 服务的查询 ⑤ 注册中心HA ⑥ 注册中心节点数据同步 ⑦ 服务信息的存储,比如mysql ...
- java 线程池、多线程实战(生产者消费者模型,1 vs 10) 附案例源码
导读 前二天写了一篇<Java 多线程并发编程>点我直达,放国庆,在家闲着没事,继续写剩下的东西,开干! 线程池 为什么要使用线程池 例如web服务器.数据库服务器.文件服务器或邮件服务器 ...
- Java知识系统回顾整理01基础01第一个程序04创建Eclipse项目
一.为Eclipse设置桌面快捷方式图标 二.双击桌面快捷方式打开Eclipse 三.选择工作区 使用在命令行Hello World中的项目目录e:\project 除了第一次启动eclipse的时候 ...
- JavaScript innerTHML和createElement效率对比
前言: 在DOM节点操作中,innerTHML和createElement都可以实现创建元素.它们实现的功能类似,但是效率却相差很大.本文分别统计用innerTHML字符串拼接方式.innerTHML ...