import axios from 'axios'

const HTTP_TIMEOUT = 15000;

export function httpPost(url, params = {},headers = {}) {
return axios.post(url, params, {
headers,
timeout: HTTP_TIMEOUT,
withCredentials: true,
}).then(resp=>resp.data);
} export function httpGet(url, params = {}) {
return axios.get(url, {
params,
timeout: HTTP_TIMEOUT,
withCredentials: true,
}).then(resp=>resp.data);
} export const errorCode = {
SUCCESS: 0,
} // 发送请求,并且对返回进行处理
// succConvert 函数-后台数据格式转换 function postAndConvertResp(url, params, succConvert, errConvert, headers = {}) {
return httpPost(url, params,headers)
.then(resp => {
return resp.err_code === errorCode.SUCCESS ?
succConvert(resp.result) :
errConvert ? errConvert(resp.err_code) : requestErrorHandler(resp.err_code, resp.err_msg);
})
} // 发送请求,并且对返回进行处理
function getAndConvertResp(url, params, succConvert, errConvert) {
return httpGet(url, params)
.then(resp => {
return resp.err_code === errorCode.SUCCESS ?
succConvert(resp.result) :
errConvert ? errConvert(resp.err_code) : requestErrorHandler(resp.err_code, resp.err_msg);
})
} // 默认错误处理
function requestErrorHandler(errCode, errMsg) {  
  throw new ServerRespError(errMsg);
}
// 前端自定义错误
export class ParamError extends Error {
constructor(message) {
super(message) this.errorType = 'ParamError'
}
} // 服务端返回错误
export class ServerRespError extends Error {
constructor(message) {
super(message) this.errorType = 'ServerRespError'
}
}

post请求参数处理:

function appendCommon2QueryStr(params) {
return data2ParamString(params);
} // param对象转换为paramStr
function data2ParamString(data) {
if (typeof data === 'string') {
return data;
}
return objectToParamString(data);
} // 将对象转换成键值对形式,只支持单层
function objectToParamString(data) {
var ret = '';
for (var key in data) {
ret = ret + key + '=' + encodeURIComponent(data[key]) + '&';
}
ret = ret.substr(0, ret.length - 1); // 去除最后的'&'
return ret;
} // 示例
export function example(reqData) {
let request = {
exam : reqData.exam
} request = appendCommon2QueryStr(request); return postAndConvertResp(URL, request, succConvert)
}

axios封装http请求的更多相关文章

  1. vue项目实践-添加axios封装api请求

    安装 axios npm install axios --save 创建实例 (utils/fetch.js) axios 默认提交格式为:application/json 可使用 qs 模块(需要安 ...

  2. Vue axios封装 实现请求响应拦截

    封装 axios.js import axios from 'axios' import { baseURL } from '@/config' class HttpRequest { constru ...

  3. vue-cli配置axios,并基于axios进行后台请求函数封装

    文章https://www.cnblogs.com/XHappyness/p/7677153.html已经对axios配置进行了说明,后台请求时可直接this.$axios直接进行.这里的缺点是后端请 ...

  4. axios浏览器异步请求方法封装 XMLHttpRequest

    axios学习笔记defaults(浏览器端异步请求处理方式) 浏览器异步请求方法封装,主要使用XMLHttpRequest lib/adapters/xhr.js //入口 var utils = ...

  5. vue-cli3中axios如何跨域请求以及axios封装

    1. vue.config.js中配置如下 module.exports = { // 选项... // devtool: 'eval-source-map',//开发调试 devServer: { ...

  6. vue+axios 对restful 请求封装

    礼拜天来公司整理项目,项目是最近开始重构的,里面的各种http请求接口是restful结构的(为了提升项目的比格),整理一下笔记 [restful介绍][1]博主讲的很详细 技术栈: vue + vu ...

  7. Vue 封装axios(四种请求)及相关介绍(十三)

    Vue 封装axios(四种请求)及相关介绍 首先axios是基于promise的http库 promise是什么? 1.主要用于异步计算 2.可以将异步操作队列化,按照期望的顺序执行,返回符合预期的 ...

  8. axios封装

    前言 作为出入vue的小萌新,我在写请求的时候,也是毫不犹豫写了ajax,结果肯定是不行的... Vue 原本有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2. ...

  9. vue2.0 axios封装、vuex介绍

    一.前言 博主也是vue道路上的行者,道行不深,希望自己的东西能对大家有所帮助.这篇博客针对 了解过vue基础,但是没有做过vue项目的童鞋.如果想看基础指令,可以看我之前的一篇博客,请点击  跳转, ...

随机推荐

  1. Alternating Sum

    http://codeforces.com/problemset/problem/963/A 不考虑正负的话,每两项之间之间公比为b/a,考虑正负,则把k段作为循环节,循环节育循环节之间公比为(b/a ...

  2. Aspose.Cells相应操作及下载

    Aspose.Cells相应操作 1,上传 1.1 Workbook Workbook workBook = new Workbook(); 属性: 名称 值类型 说明 Colors Color[] ...

  3. Unix操作系统的入门与基础

    http://dev2dev.cnblogs.com/archive/2005/10/10/251894.aspx Unix操作系统的入门与基础 与大家熟悉的Windows用户界面和使用习惯不同,Un ...

  4. BZOJ2115: [Wc2011] Xor(Dfs树,Xor线性无关组)

    Description Input 第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目. 接下来M 行描述 M 条边,每行三个整数Si,Ti ,Di,表示 Si 与Ti之间存在 一条权值为 ...

  5. Tensorflow 学习笔记 -----tf.where

    TensorFlow函数:tf.where 在之前版本对应函数tf.select 官方解释: tf.where(input, name=None)` Returns locations of true ...

  6. Idea下mybatis的错误—Module not specified

    IDEA下使用maven的mybatis常见错误 错误类型一:导入项目引起的错误Module not specified 错误提示:idea Error Module not specified. 错 ...

  7. 代码正常,junit却报错原因及解决方法

    junit测试,不能有参数 和static,去掉static测试正常;

  8. 我的RTOS 之二 --Threadx在skyeye上仿真測试(基于2410)

    对于RTOS 移植来说,移植平台至少要提供双方面的设备. 1.OS执行时,须要tick,所以须要提供Timer定时器 2.OS执行时,须要调度,就是挂起当前线程,把控制权交给系统,所以须要訪问系统各个 ...

  9. Docs-->.NET-->API reference-->System.​Web.​UI.​Web​Controls-->Repeater

    https://docs.microsoft.com/en-us/dotnet/api/system.web.ui.webcontrols.repeater?view=netframework-4.7 ...

  10. vue 点击事件阻止冒泡 用stop

    1.使用vue阻止子级元素的click事件冒泡,很简单,用stop.eg: @click.stop='xxx'