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 ... 
随机推荐
- 自己写的PHP的mql类
			用类封装的一个数据库的操作,不仅安全,而且会省去很多代码. header('Content-type:text/html;charset="utf-8"'); class mysq ... 
- 【前端分享】 JavaScript最经典的55个技巧(转)
			从别的地方看到的,保存下,有空实践下再补充. 1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键 <tab ... 
- JavaScript中的线程与进程
			定义: 线程分为:单线程和多线程 单线程:一个正在运行的程序(即进行)至少有一个线程,这个线程叫做主线程,只有一个主线程的程序叫做单线程程序,主线程负责执行所有代码的执行(UI展现及刷新.网络请求.本 ... 
- 粘包解决高端_Server
			from socket import * #导入套接字模块的所有命令import subprocess #导入subprocess模块,用于执行命令行import struct #导入struck模块 ... 
- 在HTTP页面输入数据,Chrome 70将显示红色不安全警告
			2018年10月17日,Chrome 70版本正式发布,该版本更新多项安全功能,再次升级对HTTP页面的不安全警告样式.当用户在HTTP页面输入数据时,Chrome 70将显示醒目的红色不安全警告,让 ... 
- vue2 在methods 中无法获取this对象
			在methods中使用箭头函数无法获取this ExamName:()=> { console.log(this);} 这样就行了: ExamName:function() { console. ... 
- Linux网络编程(一):一个简单的socket程序
			服务器: /* *tcp_server.c */ #include <stdio.h> #include <sys/socket.h> #include <netinet ... 
- cmake模板
			1.主要命令 project (TEST):指定项目名称为TEST aux_source_directory(<dir> <variable>):将当前目录中的源文件名称赋值给 ... 
- open函数详解
			转载:https://www.cnblogs.com/frank-yxs/p/5925574.html open函数用来在进程中打开文件,如果成功则返回一个文件描述符fd. ============= ... 
- WCF与WEB API区别
