基于axios的vue插件,让http请求更简单

ajax-plus

基于axios 的 Vue 插件

如何使用

npm 模块引入

首先通过 npm 安装

```npm install --save ajax-plus
or
yarn add ajax-plus -S


<p>然后在入口文件引入并配置:</p>
<p>对标axios的配置,详见<a href="https://www.npmjs.com/package/axios" rel="nofollow noreferrer">axios</a>??</p>

import Vue from ‘Vue‘
// 引入
import ajaxPlus from ‘ajax-plus‘
// 配置
Vue.use(ajaxPlus, {
//这里写一些ajax的option,详见axios文档,比如
baseURL: "https://jsonplaceholder.typicode.com",
timeout: 150000
})


<h2>示例</h2>
<h3>$ajaxPlus方法</h3>
<p>在 Vue 组件上添加了 <code>$ajaxPlus</code> 方法, 使用如下:</p>

// method可以为 get、delete、options、post、put、patch、head

// url为去除baseUrl的

// data为object

this.$ajaxPlus(method, url, data, res =>{
//success call back code
})

//也可以省略data参数,直接写callback(鉴于有些请求不需要传参数)
this.$ajaxPlus(method, url, res =>{
//success call back code
})

//$ajaxPlus已经在源码中处理catch容错了,假若想在代码里处理报错,再加一个参数,如下

this.$ajaxPlus(method, url, data, res =>{
//success call back code
},{
//catch是ajax请求失败后 要执行的代码
//finallyCb是ajax请求结束后 要执行的代码,无论成功或者失败
catchCb:()=>{//code}
finallyCb:()=>{//code}
})


<p>以上<code>catchCb</code>和<code>finallyCb</code>几乎很少会用</p>
<p><code>ajax-plus</code>中给<code>vue</code>全局mixin了一个<code>loading</code>变量,会在ajax请求结束后自动置为false,这个变量,你可以做一些ui层,比如按钮的防止高频功能</p>

Vue.mixin({
data () {
return {
loading: false
}
}
})
```

如果你还要做其它相关操作 可以写在finallyCb中.

比如

&lt;el-button :loading="loading1" @click="handleSubmit"&gt;按钮1&lt;/el-button&gt;


handleSubmit(){
    this.$ajaxPlus('post','/submit',{foo:1, bar:2}, res=&gt;{
        alert('提交成功了')
    },{
        catchCb:()=&gt;{
            alert('提交失败了')
        },
        finallyCb:()=&gt;{
            //按钮置为可点击状态
            this.loading1 = false;
        }
    })
}

$ajax

也可以通过 this.$axios 来使用 axios 所有的 api 方法,如下:


this.$ajax.get(url, data).then(res =&gt;{
  //拿到res了
})

this.$ajax.post(url, data).then( res =&gt;{
  //拿到res了
})

try {
  const data = await this.$ajax.post(url, data)
} catch (error) {

}

由于前后端约定不一致,关于callback的更深层的处理并没有完善。

axiosroutervuex结合起来才能更强大,比如拦截器中根据status判断是否登陆,用户的鉴权可以和store结合,response的相关报错和相关ui的Diag、Message结合会更棒.

个人笔记

更多使用方式以及改写, 参考源码, 欢迎提意见。

原文地址:https://segmentfault.com/a/1190000016802727

原文地址:https://www.cnblogs.com/lalalagq/p/9900957.html

时间: 2024-08-10 08:02:39

基于axios的vue插件,让http请求更简单的相关文章

OkHttpUtils一个专注于让网络请求更简单的框架

1.支持的常用功能 一般的 get,post,put,delete,head,options请求 基于Post的大文本数据上传,postString(),postJson()等 多文件和多参数统一的表单上传(允许监听上传进度) 支持一个key上传一个文件,也可以一个Key上传多个文件 大文件下载和下载进度回调 大文件上传和上传进度回调 支持cookie的内存存储和持久化存储,支持传递自定义cookie 提供网络缓存功能,默认支持304缓存协议,并额外扩展了三种本地缓存模式 支持301.302重定

使用Retrofit和Rxjava让你的网络请求更简单

去年的时候好多公司就已经使用Rxjava和Retrofit了,最近自自己学习了一下,感觉真的是很好用,让自己的网络请求变得更简单了,而且封装性极强. 首先做一下准备工作,导入需要引用的文件 compile 'com.android.support:appcompat-v7:25.1.0' testCompile 'junit:junit:4.12' compile 'io.reactivex:rxjava:1.1.0' compile 'io.reactivex:rxandroid:1.1.0'

也许vue+css3做交互特效更简单

1.前言 做项目就难免会开发交互效果或者特效,而我最近开发的项目一直在使用vue,开发技术栈方面,理所当然就使用了vue+css3开发,过程中发现使用vue+css3开发特效,和javascript/jquery+css3的思维方式不一样,但是比javascript/jquery+css3简单一点点.今天就分享三个简单的小实例,希望能起到拓展思维的作用,让大家明白vue+css3应该怎样开发交互效果!如果大家有什么好的建议,或者觉得我哪里写错了,欢迎指出! 1.文章上面的代码,虽然代码很简单,不

react封装基于axios的API请求

一.最近做的一个后台管理项目,基于antd-pro做的,需要封装基于axios请求,便于开发,直接上代码. import axios from 'axios'; export const MethodType = { GET: 'GET', POST: 'POST', PUT: 'PUT', DELETE: 'DELETE', PATCH:'PATCH' }; /** * 模块说明:有api_token的请求 */ export const request = (api, method = Me

vue 插件

UI组件 element ★9305 - 饿了么出品的Vue2的web UI工具套件 Vux ★6802 - 基于Vue和WeUI的组件库 mint-ui ★4776 - Vue 2的移动UI元素 iview ★4458 - 基于 Vuejs 的开源 UI 组件库 Keen-UI ★2363 - 轻量级的基本UI组件合集 vue-material ★2207 - 通过Vue Material和Vue 2建立精美的app应用 muse-ui ★1992 - 三端样式一致的响应式 UI 库 vuet

vue实战使用ajax请求后台数据(小白)

vue实战使用ajax请求后台数据(小白) 前言:前端小白入门到这个阶段,应该会知道我们所做的页面上那些数据,绝大部分都不是静态的数据,而是通过调用后台接口把数据渲染到页面上的效果.ajax可以帮助我们更好的去实现这一点,下面是详解在vue中如何使用它. vue本身它是不支持直接发送ajax请求的,需要用到axios(一个基于promise的HTTP库,可以用在浏览器和node.js中)这是Axios文档的介绍,详细可查看:https://www.kancloud.cn/yunye/axios/

Vue 中使用Ajax请求

Vue 项目中常用的 2 个 ajax 库 (一)vue-resource vue 插件, 非官方库,vue1.x 使用广泛 vue-resource 的使用 在线文档   https://github.com/pagekit/vue-resource/blob/develop/docs/http.md 下载 npm install vue-resource--save 编码 // 引入模块 ,注意应该在App.vue中引入和声明 import VueResource from 'vue-res

基于Retrofit+RxJava的Android分层网络请求框架

目前已经有不少Android客户端在使用Retrofit+RxJava实现网络请求了,相比于xUtils,Volley等网络访问框架,其具有网络访问效率高(基于OkHttp).内存占用少.代码量小以及数据传输安全性高等特点. Retrofit源码更是经典的设计模式教程,笔者已在之前的文章中分享过自己的一些体会,有兴趣的话可点击以下链接了解:<Retrofit源码设计模式解析(上)>.<Retrofit源码设计模式解析(下)> 但在具体业务场景下,比如涉及到多种网络请求(GET/PU

转:jQuery插件之Wookmark:流布局插件遇到图片资源请求过慢导致最终计算图片绝对位置top不够准确发生图片重叠的解决方案

谈起Wookmark我想做过前端的大侠都不会觉得陌生,它就是远近闻名的流布局jQuery插件,这个插件使用起来非常简单,需要引入两个js: view sourceprint? 1.<script src="/js/jquery-1.10.2.min.js"></script> 2.<script src="js/jquery.wookmark.min.js"></script> 因为Wookmark是基于jQuery编