axios全局配置
axios.config.js
:
import axios from 'axios';
// 创建一个 axios 实例
const axiosInstance = axios.create({
// 非必须,设置基础请求地址
baseURL: 'https://example.com/',
// 非必须,请求URL,可用于前缀
url: '/api',
// 非必须,请求方法
method: 'get',
// 非必须,请求超时时间(毫秒)
timeout: 5000,
// 非必须,请求头
headers: {
// 设置请求头的 Content-Type
'Content-Type': 'application/json',
// 在此处可以添加其他默认的请求头
},
// 在发送请求之前对请求数据进行处理
transformRequest: [function(data, headers) {
return data;
}],
// 在接收响应数据之前对数据进行处理
transformResponse: [function(data) {
return data;
}],
// 非必须,与请求一起发送的URL参数,必须是一个简单对此昂或URLSearchParams独享
params: {
ID: 1234,
},
// 非必须,主要用于序列化`params`
paramSerializer: function(params) {
return Qs.stringify(params, {arrayFormat: 'brackets'})
},
// 非必须,发送的请求体数据
// 仅适用于post、put、DELETE和PATCH数据
// 在没有设置transformRequest时,则必须是以下类型之一:
// string, plain object, ArrayBuffer, ArrayBufferView, URLsearchParams
body: {
title: '采蘑菇的小姑娘'
},
// 非必须,发送请求体的可选语法
// 请求方式post
// 只有value会被发送,key不会被发送
data: 'Country=Brasil&City=Belo Horizonte',
// 非必须,允许携带跨域凭证(例如,在发送跨域请求时带上 cookie)
withCredentials: false,
// 非必须,允许自定义处理请求,这使测试更加容易
// 返回一个promise并提供一个有效的响应
adapter: function(config) {
//...
},
// 非必须,Http基础身份验证
auth: {
username: '',
password: ''
},
// 非必须,响应数据类型
// 默认json,可选arraybuffer、document、json、text、stream、blob
responseType: 'json',
// 非必须,响应编码
responseEncoding: 'utf8',
// 非必须, xsrf token值,被用做cookie的名称
xsrfCookieName: 'XSRF-TOKEN',
// 非必须,是到有xsrf token值的http请求头名称
xsrfHeaderName: 'X-XSRF-TOKEN',
// 非必须,允许为上传处理进度事件
onUploadProgress: function(progressEvent) {
// 处理原生进度事件
},
// 非必须,允许为下载处理进度事件
onDownloadProgress: function(progressEvent) {
// 处理原生进度事件
},
// 非必须,定义了node.ks中允许的http修昂应内容的最大字节数
maxContentLength: 2000,
// 非必须,定义了node.js中允许的http请求内容的最大字节数
maxBodyLength: 2000,
// 非必须,定义了对于给定的HTTP状态码是resolve 还是 reject promise
validateStatus: function(status) {
return status >=200 && status < 300; // 这是默认配置
},
// 非必须,定义了在node.js中药尊村的最大重定向数
maxRedirects: 5,
// 非必须,定义了node.js中使用的UNIX套接字
// e.g. '/var/run/docker.sock' 发送请求到 docker 守护进程。
// 只能指定 `socketPath` 或 `proxy` 。
// 若都指定,这使用 `socketPath`
socketPath: null,
// `httpAgent` and `httpsAgent` define a custom agent to be used when performing http
// and https requests, respectively, in node.js. This allows options to be added like
// `keepAlive` that are not enabled by default.
httpAgent: new http.Agent({ keepAlive: true }),
httpsAgent: new https.Agent({ keepAlive: true }),
// `proxy` 定义了代理服务器的主机名,端口和协议。
// 您可以使用常规的`http_proxy` 和 `https_proxy` 环境变量。
// 使用 `false` 可以禁用代理功能,同时环境变量也会被忽略。
// `auth`表示应使用HTTP Basic auth连接到代理,并且提供凭据。
// 这将设置一个 `Proxy-Authorization` 请求头,它会覆盖 `headers` 中已存在的自定义 `Proxy-Authorization` 请求头。
// 如果代理服务器使用 HTTPS,则必须设置 protocol 为`https`
proxy: {
protocol: 'https',
host: '127.0.0.1',
port: 9000,
auth: {
username: 'mikeymike',
password: 'rapunz3l'
}
// see https://axios-http.com/zh/docs/cancellation
cancelToken: new CancelToken(function (cancel) {
}),
// `decompress` indicates whether or not the response body should be decompressed
// automatically. If set to `true` will also remove the 'content-encoding' header
// from the responses objects of all decompressed responses
// - Node only (XHR cannot turn off decompression)
decompress: true // 默认值
});
/ 请求拦截器
axiosInstance.interceptors.request.use(
(config) => {
// 在请求发送之前可以做一些处理,例如添加 token 等
return config;
},
(error) => {
// 对请求错误的处理
return Promise.reject(error);
}
);
// 响应拦截器
axiosInstance.interceptors.response.use(
(response) => {
// 对响应数据进行处理
return response.data;
},
(error) => {
// 对响应错误进行处理
return Promise.reject(error);
}
);
export default axiosInstance;
发表回复