vue项目,封装api并使用
封装api

index.js
let uploadBase = ''
if(process.env.NODE_ENV === 'production'){
    uploadBase = 'https://cloud.inschos.com'
}
const ApiSetting = {
  // 账号相关
  account_login: {url: '/api/account/web/account/login/company',method: 'post'},
}
export default ApiSetting
axios.js
import Axios from 'axios'
import { MessageBox } from 'element-ui'
Axios.defaults.withCredentials = true
Axios.interceptors.response.use(
    data => {
        if (data.status && data.status === 200 && data.data.code !== 200) {
            if(data.data.code === 502){
                location.href = '/login'
            }
            // MessageBox.alert(data.data.message)
            return Promise.reject(data.data.message[0].details, data)
        }
        return data
    },
    err => {
        if (err.response.status === 404) {
            //			MessageBox.alert('请求无效', '提示')
        } else if (err.response.status === 403) {
            MessageBox.alert('权限不足,请联系管理员!', '提示')
        } else if (err.response.status === 502) {
            location.href = '/login'
        } else {
            MessageBox.alert('服务器错误!', '提示')
        }
        return Promise.reject(err)
    }
)
function errorState(err) {
}
function successState(res) {
}
const httpServer = (opts, data) => {
    const token = localStorage.getItem('token')
    const PUBLIC = `?token=${token}`
    let httpDefaultOpts = ''
    var host = `${process.env.HOST}`
    var prot = `${process.env.PORT}`
    var base = host +(prot?":"+prot:"")
    if (opts.method === 'post') {
        httpDefaultOpts = {
            method: opts.method,
            url: `${base}${opts.url}${PUBLIC}`,
              headers:{
						'Content-Type':'text/html;charset=utf-8'
					},
            //    timeout: 10000,
            data: data
        }
    } else {
        httpDefaultOpts = opts
    }
    return new Promise(function (resolve, reject) {
        Axios(httpDefaultOpts).then(
            (res) => {
                successState(res)
                resolve(res)
            }
        ).catch(
            (err) => {
                errorState(err)
                reject(err)
            }
        )
    })
}
export default httpServer
使用封装好的api
import ApiSetting from "@/api"; //首先要引入
//方法
 submitForm() {
         this.$http(ApiSetting.account_login, this.ruleForm2)
           .then(res => {
             if (res.data.code == 200) {
               var data = res.data.data;
               Object.assign(data, this.ruleForm2);//这是合并对象
             }
           })
           .catch(err => {
             this.$notify({
               title: "操作提示",
               message: err,
               type: "error"
             });
           });
    },
安装axios
1.需要在命令行里安装
npm install axios
2.需要在main.js里引入
import axios from 'axios'
Vue.prototype.$http = axios
3.因为你已经把$http挂载到vue实例上了,所以页面调用的时候就可以直接this.$http了
												
											vue项目,封装api并使用的更多相关文章
- vue项目 封装api
		
设计思路 为了加强项目的可维护性,建议将请求接口api进行统一封装, 一个常规项目的基础地址一般为唯一,所以考虑将基础地址设定一个变量 let baseUrl: "xxxxxx" ...
 - vue项目接入api接口
		
我们在做项目时,一切基础在于数据上面,所以接入api接口是关键. 访问接口是我们会遇到跨域,而,vue-cli给我们提供了反向代理,所以我们只需要配置一下就可以了. 在config文件中找到index ...
 - 15、vue项目封装axios并访问接口
		
1.在src下新建util文件夹,在util下新建request.js文件: 封装axios: import axios from 'axios' import QS from 'qs'; // im ...
 - vue项目中遇到的那些事。
		
前言 有好几天没更新文章了.这段实际忙着做了一个vue的项目,从 19 天前开始,到今天刚好 20 天,独立完成. 做vue项目做这个项目一方面能为工作做一些准备,一方面也精进一下技术. 技术栈:vu ...
 - 分享我在 vue 项目中关于 api 请求的一些实现及项目框架
		
本文主要简单分享以下四点 如何使用 axios 如何隔离配置 如何模拟数据 分享自己的项目框架 本文主要目的为以下三点 希望能够帮到一些人 希望能够得到一些建议 奉上一个使用Vue的模板框架 我只是把 ...
 - vue项目搭建 (二) axios 封装篇
		
vue项目搭建 (二) axios 封装篇 项目布局 vue-cli构建初始项目后,在src中进行增删修改 // 此处是模仿github上 bailicangdu 的 ├── src | ├── ap ...
 - vue项目构建实战基础知识:SPA理解/RESTful接口介绍/static目录配置/axios封装/打包时map文件去除
		
一.SPA 不是指水疗.是 single page web application 的缩写.中文翻译为 单页应用程序 或 单页Web应用,更多解释请自行搜索. 所有的前端人员都应该明白我们的页面的 u ...
 - 论vue项目api相关代码的组织方式
		
论vue项目api相关代码的组织方式 看了下项目组同事的代码,发现不同项目有不同的组织版本 版本一: ├─apis │ a.api.js │ b.api.js │ b.api.js │ d.api.j ...
 - vue项目-axios封装、easy-mock使用
		
vue全家桶概括下来就是 项目构建工具(vue-cli) 路由(vue-router) 状态管理(vuex) http请求工具 vue有自己的http请求工具插件vue-resource,但是vue2 ...
 
随机推荐
- GRpc-Go使用笔记
			
linux下配置GRpc-golang 1.git中下载protobuf包 2.解压(/usr/local/protobuf) unzip protobuf-cpp-3.0.0-alpha-3.z ...
 - css pointer-event
			
详见:张鑫旭 CSS3 pointer-events:none应用举例及扩展 pointer-events:none ,可以使事件穿透, 如: 2 覆盖在 1 上面. 给 2 设置 pointer-e ...
 - Java Mail解决标题乱码问题
			
在Java实现发送邮件功能时,直接使用 message.setSubject(subject) 的方式设置标题,在本地测试发送邮件的中文标题可以正常显示,但是将项目部署到服务器后,发送邮件的中文标题就 ...
 - systemd bug: bz1437114 core:execute: fix fork() fail handling in exec_spawn()
			
问题现象 大量僵尸进程 root 32278 0.0 0.0 0 0 ? Z 05:39 0:00 [runuser] <defunct> root 32280 0.0 0.0 0 0 ? ...
 - jquery 用于操作动态元素的delegate/on方法
			
delegate() 方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素). 在做项目中有很多由ajax动态生成的html标签,jquery对这些标签不会响应\((selector).c ...
 - 【【henuacm2016级暑期训练】动态规划专题 M】Little Pony and Harmony Chest
			
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 每一位显然只要取1..60这些数字. 然后需要保证每个这些数字里面,每个数字所用到的质因子都它所唯一拥有的.别人不能用 因为如果别人 ...
 - 【codeforces 734F】Anton and School
			
[题目链接]:http://codeforces.com/problemset/problem/734/F [题意] 给你两个数组b和c; 然后让你找出一个非负数组a满足题中所给关系; [题解] 有个 ...
 - HDU 4324 Contest 3
			
直接DFS即可 #include <iostream> #include <string.h> #include <algorithm> #include < ...
 - HDU 4313 Contest 2
			
很明显的树形DP了.但网上有的说可以用并查集.... 考虑一棵子树,当根结点有机器人时,则必定所有子树都要和根结点断开,而根结点向上返回的路径值则为其父结点与根结点连边的权值. 当根结点安全时,假设其 ...
 - Android-Universal-Image-Loader学习笔记(3)--内存缓存
			
前面的两篇博客写了文件缓存.如今说说Android-Universal-Image-Loader的内存缓存.该内存缓存涉及到的类如图所看到的 这些类的继承关系例如以下图所看到的: 如同文件缓存一样,内 ...