axios-api-query
Version:
一个javascript通过api对象模型描述自动生成axios请求实例的插件
119 lines (117 loc) • 5.72 kB
JavaScript
/**
* @desc 全局配置
*/
// @ts-nocheck
/**
* @desc
* api接口插件全局应该提供的统一参数
* @type {object}
* @property {string} mockBasePath mock-url请求地址(可以是相对 URL), 应该外部传入
* @property {boolean} mock=false mock全局控制开关
* @property {object} gParams={} URL全局自定义参数
* @property {boolean} cache=false 缓存控制开关在URL路径后面添加一个时间戳参数 _=1571825001570
* @property {number} reconnectMaxNum=0 请求失败允许的最大重连次数 - 未做开发
* @property {string} seq=/ api接口命名空间分隔符
* @property {string} invalidChar=`~!@#$^&*()=|{}\':;\',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“\'。,、? 进行特殊字符过滤的字符
* @property {object} statusMessage={400: '错误请求',404: '找不到请求地址',405: '方法不被允许',500: '内部错误',502: '错误网关',503: '无法获得服务'} 前端response返回状态码提示短语
* @property {boolean} console_request_enable=false 开启请求参数打印
* @property {boolean} console_response_enable=false 开启响应参数打印
* @property {function} request_error_callback=null 请求错误回调函数
*/
const apiDefaultConfig = {
// mock-url请求地址(可以是相对 URL), 应该外部传入
mockBasePath: '',
// mock全局控制开关
mock: false,
// URL全局自定义参数
gParams: {},
// 缓存控制开关在URL路径后面添加一个时间戳参数 _=1571825001570
cache: false,
// 请求失败允许的最大重连次数 - 未做开发
reconnectMaxNum: 0,
// api接口命名空间分隔符
seq: '/',
// 进行特殊字符过滤的字符
invalidChar:
// eslint-disable-next-line quotes
"[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]",
// 前端 response 返回状态码提示短语 https://blog.csdn.net/chuxuan0215/article/details/90676692
statusMessage: {
400: '发出的请求有错误,服务器没有进行新建或修改数据的操作', // Bad Request
401: '用户没有权限(令牌、用户名、密码错误)', // Unauthorized
402: '付费请求', // Payment Required
403: '用户得到授权,但访问是被禁止的', // Forbidden
404: '发出的请求针对的是不存在的记录,服务器没有进行操作', // Not Found
405: '方法不被允许', // Method Not Allowed
406: '请求的格式不可得', // Not Acceptable
407: '需要代理身份验证', // Proxy Authentication Required
408: '请求超时', // Request Timeout
409: '指令冲突', // Conflict
410: '请求的资源被永久删除,且不会在得到', // Gone
411: '需要Content-Length头请求', // Length Required
412: '前提条件失败', // Precondition Failed
413: '请求实体太大', // Request Entity Too Large
414: '请求URI太长', // Request-URI Too Long
415: '不支持的媒体类型', // Unsupported Media Type
416: '请求的范围不可满足', // Requested Range Not Satisfiable
417: '期望失败', // Expectation Failed
422: '当创建一个对象时,发生一个验证错误',
429: '太多请求', // Too Many Requests
500: '服务器发生错误,请检查服务器', // Internal Server Error
501: '未实现', // Not Implemented
502: '错误网关', // Bad Gateway
503: '服务不可用,服务器暂时过载或维护', // Service Unavailable
504: '网关超时', // Gateway Timeout
505: 'HTTP版本不支持' // HTTP Version Not Supported
},
// 开启请求参数打印
console_request_enable: false,
// 开启响应参数打印
console_response_enable: false,
// 请求错误回调函数,比如:502
request_error_callback: null,
// vdjs 接口请求参数校验失败回调
vdjs_fail_callback: null,
// 后端服务名(mock环境不会拼上服务前缀名)
backServerPref: ''
};
/**
* @desc
* axios全局应该提供的统一参数
* @type {object}
* @property {number} timeout=15000 超时时间(毫秒)
* @property {string} baseURL 访问url目录(可以是相对 URL), 应该外部传入
* @property {number} maxContentLength=2000 定义允许的响应内容的最大尺寸(字节数)
* @property {number} status=200 来自服务器响应的 HTTP 访问处理成功状态码
* @property {string} status=OK 来自服务器响应的 HTTP 状态信息短语
* @property {array} transformResponse 全局预处理过滤函数
* @property {object} headers={'Content-Type': 'application/json;charset=UTF-8'} 请求响应头
* @property {object} defaults 配置的默认值
* @property {string} responseType='json' 服务器响应的数据类型
* @property {object} proxy 定义代理服务器的主机名称和端口
*/
const axiosDefaultConfig = {
// 超时时间(毫秒)
timeout: 15000,
// 访问url目录(可以是相对 URL), 应该外部传入
baseURL: '',
// 定义允许的响应内容的最大尺寸(字节数)
maxContentLength: 2000,
// 来自服务器响应的 HTTP 访问处理成功状态码
status: 200,
// 来自服务器响应的 HTTP 状态信息短语
statusText: 'OK',
// 全局预处理过滤函数
transformResponse: [],
// 请求响应头
headers: {
'Content-Type': 'application/json;charset=UTF-8'
},
// 配置的默认值
defaults: {},
// 服务器响应的数据类型
responseType: 'json',
// 定义代理服务器的主机名称和端口
proxy: {}
};
export { apiDefaultConfig, axiosDefaultConfig };