axios 发送请求(常用)
1. axios.request(config);
axios({
method: "post",
url: "/user/12345",
data: {
firstName: "Fred",
lastName: "Flintstone",
},
timeout: 1000,
});
2. axios.get(url[, config])
axios.get("demo/url", {
params: {
id: 123,
name: "Henry",
},
timeout: 1000,
});
3. axios.post(url[, data[, config]])
axios.post(
"demo/url",
{
id: 123,
name: "Henry",
},
{
timeout: 1000,
}
);
对 axios 进行默认配置
1. 对所有axios进行默认配置
axios.defaults.method = 'GET';
axios.defaults.baseURL = 'http://localhost:3000';
axios.defaults.params = {id:100};
axios.defaults.timeout = 3000;
btn.onclick = function () {
axios({
url: "/posts",
}).then((response) => {
console.log(response);
});
};
2. 生成一个新的axios实例,该实例为拥有默认配置的axios
const Axios = axios.create({
timeout: 3000,
params: { id: 100 },
baseURL: "http://localhost:3000",
method: "GET",
});
btn.onclick = function () {
Axios({
url: "/posts",
}).then((response) => {
console.log(response);
});
};
设置请求拦截器
axios.interceptors.request.use(
function (config) {
console.log("请求拦截器 成功 - 1号");
config.params = { a: 100 };
return config;
},
function (error) {
console.log("请求拦截器 失败 - 1号");
return Promise.reject(error);
}
);
axios.interceptors.request.use(
function (config) {
console.log("请求拦截器 成功 - 2号");
config.timeout = 2000;
return config;
},
function (error) {
console.log("请求拦截器 失败 - 2号");
return Promise.reject(error);
}
);
axios.interceptors.response.use(
function (response) {
console.log("响应拦截器 成功 1号");
return response.data;
},
function (error) {
console.log("响应拦截器 失败 1号");
return Promise.reject(error);
}
);
axios.interceptors.response.use(
function (response) {
console.log("响应拦截器 成功 2号");
return response;
},
function (error) {
console.log("响应拦截器 失败 2号");
return Promise.reject(error);
}
);
请求取消
const btns = document.querySelectorAll("button");
let cancel = null;
btns[0].onclick = function () {
if (cancel !== null) {
return;
}
axios({
method: "GET",
url: "http://localhost:3000/posts",
cancelToken: new axios.CancelToken(function (c) {
cancel = c;
}),
}).then((response) => {
console.log(response);
cancel = null;
});
};
btns[1].onclick = function () {
cancel();
};
config 能进行那些配置?
config = {
url: "/user",
method: "get",
baseURL: "https://some-domain.com/api/",
transformRequest: [
function (data, headers) {
return data;
},
],
transformResponse: [
function (data) {
return data;
},
],
headers: { "X-Requested-With": "XMLHttpRequest" },
params: {
ID: 12345,
name: Tom,
},
paramsSerializer: function (params) {
return Qs.stringify(params, { arrayFormat: "brackets" });
},
data: {
firstName: "Fred",
},
data: "Country=Brasil&City=Belo Horizonte",
timeout: 1000,
withCredentials: false,
adapter: function (config) {},
auth: {
username: "janedoe",
password: "s00pers3cret",
},
responseType: "json",
responseEncoding: "utf8",
xsrfCookieName: "XSRF-TOKEN",
xsrfHeaderName: "X-XSRF-TOKEN",
onUploadProgress: function (progressEvent) {
},
onDownloadProgress: function (progressEvent) {
},
maxContentLength: 2000,
maxBodyLength: 2000,
validateStatus: function (status) {
return status >= 200 && status < 300;
},
maxRedirects: 5,
socketPath: null,
httpAgent: new http.Agent({ keepAlive: true }),
httpsAgent: new https.Agent({ keepAlive: true }),
proxy: {
protocol: "https",
host: "127.0.0.1",
port: 9000,
auth: {
username: "mikeymike",
password: "rapunz3l",
},
},
cancelToken: new CancelToken(function (cancel) {}),
signal: new AbortController().signal,
decompress: true,
insecureHTTPParser: undefined,
transitional: {
silentJSONParsing: true,
forcedJSONParsing: true,
clarifyTimeoutError: false,
},
};