美文网首页
(callHttpService.js)Vuejs对于axios

(callHttpService.js)Vuejs对于axios

作者: Cabigail | 来源:发表于2017-10-23 17:04 被阅读0次

该封装对get,post,delete,count等方法进行封装,并解决了跨域

/**
 * Created by zhangning on 2017/4/26.
 */

import axios from 'axios';

var timeout = 1000;

// header配置
var fillHeader = function (httpObj) {
    var headers = httpObj.headers;

    //加入leanCould Token
    headers["X-LC-Id"] = "0s7NIDDbn3JneazXE1PBNYcd-gzGzoHsz";
    headers["X-LC-Key"] = "40YjJ4gQafYtJlmssOH7Ovha";
    return headers;
}


var request = function (httpObj) {

//跨域准备
    var instance = axios.create({
        // timeout: timeout
        headers: {'Content-Type': 'application/json;charset=UTF-8'}
    });

    httpObj.data = httpObj.data || {};
    httpObj.headers = httpObj.headers || {};
    httpObj.headers = fillHeader(httpObj);

    // request拦截,设置header
    instance.interceptors.request.use(function (config) {
        config => {
            config.data= JSON.stringify(config.data);
            // config.headers={
            //
            // }
        }
        return config;
    });

    //response拦截,处理返回结果
    instance.interceptors.response.use(function (response) {
        var data = response.data ;
        if(undefined == data.result) {
            // console.log("http->[" + response.method + "]=" + response.url + getParamString(data));
            // console.log("error->" + getReturnString(response.data));
            return Promise.resolve(data)
        }
        return Promise.resolve(data);

    }, function (error) {
        if (error.response) {
            // 请求已发出,但服务器响应的状态码不在 2xx 范围内
            var errorMsg = error.response.data;
            if(errorMsg) return Promise.reject(JSON.stringify(errorMsg));

        } else {
            console.log('Error', error.message);
        }
        return Promise.reject(error);
    });


    return instance(httpObj);
}


//封装了几种方法
var callHttpService = {

    // setBaseUrl: function (url) {
    //     baseurl = url;
    // },

//  获取
    get: function (model) {
        var httpObject = {
            method: "GET",
            url:  model
        }
        return request(httpObject);
    },
//  删除
    delete: function (model) {
        var httpObject = {
            method: "DELETE",
            url: model
        }
        return request(httpObject);
    },
//创建
    post: function (model,body) {
        var httpObject = {
            method: "POST",
            url: model,
            data: body
        }
        return request(httpObject);
    },
//更新
    put: function (model, body) {
        var httpObject = {
            method: "PUT",
            url:  model,
            data: body
        }
        return request(httpObject);
    },

    servlet: function (url, body) {
        var httpObject = {
            method: "POST",
            url:url,
            data: body
        }
        return request(httpObject);
    }
};

export   default callHttpService;




/**
 * @Description :获取数据
 * @param : url(带表名,不带id查询所有,带表名查询单条)
 * @Author : zn-Cabigail(1163727353@qq.com)
 * @Date :  2017/10/10 下午4:03
 */
// service.get("https://leancloud.cn:443/1.1/classes/zn?limit=10&&order=-updatedAt&&").then(function (res)
// {
//  alert(JSON.stringify(res))
// })


/**
 * @Description :添加数据
 * @param :url,body
 * @Author : zn-Cabigail(1163727353@qq.com)
 * @Date :  2017/10/10 下午4:04
 */
// service.post("https://leancloud.cn:443/1.1/classes/zn",{name:'哈哈',age:213}).then(function (res) {
//     alert(JSON.stringify(res))
// })

/**
 * @Description :修改数据
 * @param : url(带表名,带修改数据的id),body
 * @Author : zn-Cabigail(1163727353@qq.com)
 * @Date :  2017/10/10 下午4:04
 */
// service.put("https://leancloud.cn:443/1.1/classes/zn/59dc7d2a128fe1529c8e2cfb",{name:"修改了"}).then(function (res) {
//     alert(JSON.stringify(res))
// })

/**
 * @Description :删除数据
 * @param: url(带表名,带删除的id)
 * @Author : zn-Cabigail(1163727353@qq.com)
 * @Date :  2017/10/10 下午4:05
 */
// service.delete("https://leancloud.cn:443/1.1/classes/zn/59dc7d2a128fe1529c8e2cfb").then(function (res) {
//     alert(JSON.stringify(res))
// 删除返回的是空object
// })
// util.insert("zn",{name:'aa',age:2}).then(function (res) {
//     alert("res :"+ JSON.stringify(res))
// })

相关文章

  • (callHttpService.js)Vuejs对于axios

    该封装对get,post,delete,count等方法进行封装,并解决了跨域

  • axios学习

    axios https://www.runoob.com/vue2/vuejs-ajax-axios.html h...

  • Vue二次封装axios为插件使用

    vuejs2.0 已经不再维护 vue-resource,vuejs2.0 已经使用了 axios,这也是为什么我...

  • Vue2 :axios 使用之(一)

    据说vuejs2.0已经不在维护vue-resource了,vuejs2.0 已经使用了axios了,并且官方也推...

  • axios

    最近通过 Vuejs 重构旅游页面项目使用到 axios 获取数据。对照官方文档,简要记录一些 axios 的使用...

  • vue-cli之axios

    官方文档:https://cn.vuejs.org/v2/cookbook/using-axios-to-cons...

  • vue

    vue框架 vuejs+ vue-router + vuex + axios 渐进式理解 声明式渲染(无需关...

  • 2018-01-23 Axios

    前言:随着 vuejs 作者尤雨溪发布消息,不再继续维护vue-resource,并推荐大家使用 axios 开始...

  • axios全攻略

    随着 vuejs 作者尤雨溪发布消息,不再继续维护vue-resource,并推荐大家使用 axios 开始,ax...

  • axios使用

    随着 vuejs 作者尤雨溪发布消息,不再继续维护vue-resource,并推荐大家使用 axios 开始,ax...

网友评论

      本文标题:(callHttpService.js)Vuejs对于axios

      本文链接:https://www.haomeiwen.com/subject/gxvauxtx.html