vue项目-axios封装、easy-mock使用
vue全家桶概括下来就是
- 项目构建工具(vue-cli)
- 路由(vue-router)
- 状态管理(vuex)
- http请求工具
vue有自己的http请求工具插件vue-resource,但是vue2.0后作者就不在更新了,后更推荐axios。
下面是vue项目中axios常用的方法,以及生成虚拟数据的easy-mock的使用方法。
一、axios安装和easy-mock的使用
1. axios
axios基于http客户端的promise,面向浏览器和nodejs。参考地址: https://www.kancloud.cn/yunye/axios/234845
特点
浏览器端发起XMLHttpRequests请求
node端发起http请求
支持Promise API
监听请求和返回
转化请求和返回
取消请求
自动转化json数据
客户端支持抵御
安装
npm install --save axios
为了解决post默认使用的是x-www-from-urlencoded 去请求数据,导致请求参数无法传递到后台,所以还需要安装一个插件QS
npm install qs
2. easy-mock
Easy Mock 是一个可视化,并且能快速生成 模拟数据 的持久化服务。不需要再本地安装,只需要到官网上注册登陆后加入或新建项目,在项目内定义接口和返回数据的格式。
地址:https://www.easy-mock.com/login
步骤如下:
1)登陆
2)新建项目
3)新建接口,Base URL是访问地址
4)定义接口名称和数据返回格式
这样一个接口就定义好了,我们可以通过请求工具访问,就可以得到 /login中刚定义的数据。更多定义easy-mock返回数据格式的方式,具体请参考官网例子。参考其他例子:https://blog.csdn.net/qq_42991509/article/details/94577331
二、axios 使用
axios的实例方法和配置很多,下面只是常用基本的封装和使用方式。
在vue项目中src文件夹下,有这几个需要新增的地方。
1. appCount.js文件
const HTTP_BASE_URL = 'https://www.easy-mock.com/mock/5d5f5a3f6778c215243b94ea/' // easy-mock
const TOKEN = '1234' // token
export default {
HTTP_BASE_URL,
TOKEN
}
在appCount.js文件中,我们可以放一些全局的变量。例如:访问地址的ip、token常量,超时取消请求的时常等。
2. request.js文件
import axios from 'axios'
import appCONST from './appCount.js' const requestData = async (url, params = {}) => {
let res = await axios({
url: appCONST.HTTP_BASE_URL + url,
data: params || {},
method: params.method || 'POST',
header: params.header || {
'content-type': 'application/json'
}
})
console.log(res)
if(requestSuccess(res)) {
return res.data
} else {
throw requestException(res)
}
} /**
* 请求成功
*/
function requestSuccess(res) {
const status = res.status
// 请求错误
if (status !== 200) {
return false
}
const resData = res.data
return !(resData && resData.code !== 1)
} /**
* 异常
*/
function requestException(res) {
const error = {}
error.serverCode = res.status
const resData = res.data
error.code = resData.code
error.msg = resData.msg || '系统错误'
error.data = resData.result || {}
return error
} // 导出封装函数
export default {
requestData
}
在上面文件中,requestData方法是我们封装的axios请求,在方法中,我并没有使用到安装时qs。因为在方法中定义了请求头content-type的类型是json格式,所以参数格式直接传对象进来就可以了。
如果没有定义content-type的类型,那么默认是application/x-www-form-urlencoded。请求参数在Form Data中,只能上传键值对,并且键值对都是间隔分开的。
参数形式: name1=value1&name2=value2。那么最好引入qs,然后将params格式化一下,data:qs.stringify(params)。
3. util.js
可以写一些公共的方法,例如:存取本地缓存,参数格式化等方法。然后在需要用到的地方导入这个文件,就可以使用其中的方法了。
export const localSave = (key, value) => {
localStorage.setItem(key, value)
} export const localRead = (key) => {
return localStorage.getItem(key) || ''
}
使用方式
<script>
import * as util from '@/libs/util'
export default {
name: 'login',
data() {
return {
da:''
}
},
methods: {
submit() {
util.localSave('data', '123')
}
}
}
</script>
4. api.js
import wxRequest from '../libs/request'
// 用户登录
const login = (params) => wxRequest.requestData('login', params) export default {
login
}
5. 调用接口
<template>
<div>
<button @click="submit()">点我登陆</button>
</div>
</template>
<script>
import api from '@/api/api' export default {
name: 'login',
data() {
return {
da:''
}
},
methods: {
async submit() {
try {
const dd = await api.login()
console.log(dd)
} catch(err) {
console.log(err)
}
}
}
}
</script>
更多方法,例如添加拦截器也挺好用。
vue项目-axios封装、easy-mock使用的更多相关文章
- vue项目 axios封装第二弹
import axios from "axios"; import qs from "qs"; import { Message, MessageBox } f ...
- Vue自用axios封装
[本文出自天外归云的博客园] 这是我的Vue项目中的request.js文件,请求报错了看console就会有具体请求信息,方便调试.分享一下. 其中用到了axios和element-ui的组件,ax ...
- vue项目axios请求接口,后端代理请求接口404,问题出现在哪?
在vue项目中,列表数据需要用到qq音乐接口中的数据,但是直接请求不行,有host及referer限制,需要采用后端代理的方式.借助axios及node的express,在dev-server.js中 ...
- 【Vue】axios封装,更好的管理api接口和使用
在现在的前端开发中,前后端分离开发比较主流,所以在封装方法和模块化上也是非常需要掌握的一门技巧.而axios的封装也是非常的多,下面的封装其实跟百度上搜出来的axios封装或者axios二次封装区别不 ...
- vue项目常用方法封装,持续更新中。。。
vue项目中可以直接使用 1.常用工具类untils.js中 /* * 验证手机号是否合格 * true--说明合格 */ export function isPhone(phoneStr){ let ...
- 创建Vue项目及封装axios
1. 始vue化项目 https://www.cnblogs.com/xiaonq/p/11027880.html vue init webpack deaxios # 使用脚手架创建项目 deaxi ...
- vue项目,封装api并使用
封装api index.js let uploadBase = '' if(process.env.NODE_ENV === 'production'){ uploadBase = 'https:// ...
- 在vue项目中封装echarts的正确姿势
为什么需要封装echarts 每个开发者在制作图表时都需要从头到尾书写一遍完整的option配置,十分冗余 在同一个项目中,各类图表设计十分相似,甚至是相同,没必要一直做重复工作 可能有一些开发者忘记 ...
- $Django 前后端之 跨域问题(同源策略) vue项目(axios跨域请求数据)
1 跨域问题(多个域之间的数据访问) #同源策略(ip port 协议全部相同) #本站的只能请求本站域名的数据 #CORS实现(跨域资源共享) #实现CORS通信的关键是服务器.只要服务器实现了CO ...
随机推荐
- Android jni/ndk编程二:jni数据类型转换(primitive,String,array)
一.数据类型映射概述 从我们开始jni编程起,就不可能避开函数的参数与返回值的问题.java语言的数据类型和c/c++有很多不同的地方,所以我们必须考虑当在java层调用c/c++函数时,怎么正确的把 ...
- javascript之Location对象
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 虚拟化技术原理(CPU、内存、IO)
本文来自:http://www.ywnds.com/?p=5856 虚拟化 云计算现在已经非常成熟了,而虚拟化是构建云计算基础架构不可或缺的关键技术之一. 云计算的云端系统, 其实质上就是一个大型的分 ...
- python格式化字符串format的用法
填充与对齐 填充常跟对齐一起使用 ^.<.>分别是居中.左对齐.右对齐,后面带宽度 :号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充 比如 In [15]: '{:> ...
- APP营销软件项目常见(合规)风险评估
一个软件项目开始前,往往需要先进行风险评估以及可行性评估,尤其涉及到营销拉新类项目,需要大量依靠用户二次分享传播,为了避免项目做了无用功,分享一些常见的App项目风险: 微信分享功能 风险: 1.蒙层 ...
- ModelAndView及页面转发
1.ModelAndView springMVC中返回值如果是ModelAndView,则其既包含模型数据信息,也包含视图信息. 在处理方法中可以使用ModelAndView对象的方法添加模型数据:a ...
- [Python]机器学习:Tensorflow实现线性回归
源码 #> tutorial:https://www.cnblogs.com/xianhan/p/9090426.html # 步骤一:构建模型 # 1.TensorFlow 中的线性模型 ## ...
- java:nginx(java代码操作ftp服务器)
1.检查是否安装了vsftpd [root@linux01 ~]# rpm -qa|grep vsftpd 2.安装vsftpd [root@linux01 ~]# yum -y install vs ...
- PHP $_SERVER超全局变量
$_SERVER是php中的超全局变量,一个包含了诸如头信息(header).路径(path).以及脚本位置(script locations)等等信息的数组.这个数组中的项目由 Web 服务器创建. ...
- Django视图之FBV与CBV
一. CBV与FBV CBV:Class Based View FBV:Function Based View 我们之前写过的都是基于函数的view,就叫FBV.还可以把view写成基于类的,那就是C ...