zoukankan      html  css  js  c++  java
  • 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了
    
  • 相关阅读:
    3、linux网络编程--网络字节序
    1、linux网络编程--网络协议
    第四篇:进程
    第五篇:进程通信
    第六篇:线程原理
    操作系统基本概念
    第一篇:基础原理篇
    第二篇:操作系统历史
    (2)linux下的简单的socket通信实例
    (3)基于linux的socket编程TCP半双工client-server聊天程序
  • 原文地址:https://www.cnblogs.com/lml-lml/p/9598801.html
Copyright © 2011-2022 走看看