axios基本配置
点击查看代码
<!-- axios基础用法 -->
<script>
/**
* axios:一款基于promise设计模式封装的ajax库(JQ中的ajax就是最普通的ajax库,没有基于promise管理)
*/
//=> axios.get([URL],[OPTIONS]);
// axios.get();
// axios.delete();
// axios.head();
//=>axios.post([URL],[DATA],[OPTIONS]):DATA通过请求主体传递给服务器的内容
// axios.post();
// axios.put();
/**
* OPTIONS
* baseURL:基础的URL路径
* transformRequest:处理请求参数(对POST系列有作用)
* transformResponse:把返回的结果进行处理
* headers:设置请求头
* params:GET系列请求传递给服务器的内容(会把parmas中的内容拼接为x-www-form-urlencoded这种格式,基于URL问号传参传递给服务器)
* paramsSerializer:传递参数的序列化
* timeout:超时时间
* withCredentials:跨域请求中是否允许携带凭证
* responseType:预设服务器返回结果,默认是JSON,支持BUFFER/TEXT/STREAM/DOCUMENT...
* validateStatus:AXIOS本身只有在HTTP状态码以2开头的时候才认为是成功,其余都认为是失败状态,当然我们可以自己来设置,基于validateStatus这个来修改
* ...
*/
//执行axios.xxx()都会返回一个promise实例,ajax请求成功会把实例的状态改为fulfilled,请求失败状态改为rejected;并且将获取的结果或者错误原因作为promise的value
// axios.get('http://127.0.0.1:5501/02-JavaScript/08%20%E8%AE%AD%E7%BB%83+%E7%9F%A5%E8%AF%86%E8%AF%A6%E8%A7%A3/21-%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%92%8C%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF%E7%9A%84%E4%BA%A4%E4%BA%92%E5%A4%84%E7%90%86/json/data2.json?_=' + Math.random(), {
// headers: {
// //=>设置请求头信息
// AAA: encodeURIComponent('哈哈哈')
// },
// params: {
// lx: 1,
// from: 'WX'
// }
// }).then(result => {
// //=>result:从服务器获取的结果
// /**
// * CONFIG:我们自己配置的响应信息
// * DATA:存储的是响应主体内容
// * HEADERS:存储响应头的信息
// * REQUEST:ajax实例
// * status:响应状态码
// * status-text:状态码的描述
// */
// return result.data;
// }).catch(reason => {
// console.log(reason);
// throw new Error(reason);
// }).then(data => {
// //=>data:从服务器获取的响应主体内容
// console.log(data);
// });
axios.post('http://127.0.0.1:5501/02-JavaScript/08%20%E8%AE%AD%E7%BB%83+%E7%9F%A5%E8%AF%86%E8%AF%A6%E8%A7%A3/21-%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%92%8C%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF%E7%9A%84%E4%BA%A4%E4%BA%92%E5%A4%84%E7%90%86/json/data.json', {
lx: 1,
from: 'WX'
}, {
headers: {
//=>设置请求头信息
AAA: encodeURIComponent('哈哈哈')
},
transformRequest: function(data) {
if (!data) return;
let str = ``;
for (let key in data) {
if (!data.hasOwnProperty(key)) return;
str += `&${key}=${data[key]}`
}
return str.substring(1);
}
}).then(result => {
return result.data;
}).catch(reason => {
console.log(reason);
throw new Error(reason);
}).then(data => {
//=>data:从服务器获取的响应主体内容
console.log(data);
});
</script>
<!-- axios全局配置项 -->
<script>
/* 在使用AXIOS之前,我们一般都需要配置默认的配置项 */
// 1.基础URL,后期再发送请求的时候,URL请求地址最前面的公共部分就不需要再写了
axios.defaults.baseURL = "http://127.0.0.1:5501/02-JavaScript/08%20%E8%AE%AD%E7%BB%83+%E7%9F%A5%E8%AF%86%E8%AF%A6%E8%A7%A3/21-%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%92%8C%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF%E7%9A%84%E4%BA%A4%E4%BA%92%E5%A4%84%E7%90%86";
// 2.跨域请求中允许携带资源凭证(例如COOKIE信息)
axios.defaults.withCredentials = true;
// 3.设置请求头:POST系列中,我们传递给服务器数据的格式一般以x-www-form-urllencoded格式为主
axios.defaults.headers['Content-Type'] = 'application/x-www-form-urllencoded';
// 4.设置请求拦截器(只对POST系列有用):把基于请求主体传递给服务器的内容进行拦截,把内容格式变为x-www-form-urllencoded这种格式,再传递给服务器
axios.defaults.transformRequest = function(data) {
if (!data) return;
let str = ``;
for (let key in data) {
if (!data.hasOwnProperty(key)) return;
str += `&${key}=${data[key]}`
}
return str.substring(1);
};
// 5.设置响应拦截器:[成功状态]把从服务器获取的结果中的响应主体信息获取到即可,[失败状态]手动把错误信息抛出异常
axios.interceptors.response.use(function(response) {
return response.data;
}, function(error) {
// return Promise.reject(error);
throw new Error(error);
});
// 6.配置什么状态才算成功(把PROMISE状态改为FULFILLED)
axios.defaults.validateStatus = function(status) {
return /^(2|3)\d{2}$/.test(status);
}
// axios.get('/json/data2.json').then(data => {
// console.log(data);
// }).catch(reason => {
// console.log(reason);
// });
//=>Promise.all
let promise1 = Promise.resolve(100);
let promise2 = Promise.resolve(200);
axios.all([promise1, promise2]).then(results => {
let [
val1,
val2
] = results;
console.log(val1, val2);
});
// axios.all([promise1, promise2]).then(axios.spread(function(val1, val2) {
// //=>axios.spread:把基于axios.all获取的结果一项项的单独获取到
// console.log(val1, val2);
// }));
</script>
axios基本配置的更多相关文章
- vue-cli 3.0之跨域请求代理配置及axios路径配置
vue-cli 3.0之跨域请求代理配置及axios路径配置 问题:在前后端分离的跨域请求中,报跨域问题 配置: vue.config.js: module.exports = { runtimeCo ...
- axios [æk'si:əʊs] 及 axios 请求配置
特征 比Jquery轻量,但处理请求不多的时候,可以使用 基于Promise语法标准 支持nodejs 自动转换JSON数据 用法 get // Make a request for a user w ...
- axios全局配置及拦截器
axios使用说明文档 axios 全局配置: //axios-init.js import axios from 'axios': let loadingInstance; //创建Loading ...
- vuejs axios安装配置与使用
1.安装服务 npm install --save axios vue-axios 2.在main.js import axios from 'axios' import VueAxios from ...
- 在vue项目中的axios使用配置记录
默认vue项目中已经安装axios,基于element-ui开发,主要记录配置的相关. axiosConfig.js import Vue from 'vue' import axios from ' ...
- 3.vue引入axios全局配置
前言: Vue官方推荐使用axios来进行异步访问. axios文档参考:axios中文文档 开始搭建: 1.引入axios (1)打开终端 win+R (2)切换到项目路径: g: cd Webap ...
- axios使用配置
axios 配置 下载cnpm install axios vue-axios --save-dev main.js文件中配置 import axios from 'axios' import Vue ...
- Axios 请求配置参数详解
axios API 可以通过向 axios 传递相关配置来创建请求 axios(config) // 发送 POST 请求 axios({ method: 'post', url: ' ...
- (day69)axios、配置ElementUI、配置jQuery和Bootstrap、Django中的CORS问题
目录 一.Vue的ajax插件:axios 二.Django中的CORS跨域问题 (一)同源策略 (二)解决方式(cors模块) 三.Vue配置ElementUI 四.Vue配置jQuery和Boot ...
- vue axios简单配置
参考:https://www.cnblogs.com/sophie_wang/p/7844119.html 1. 安装 npm install axios 2. main.js import axio ...
随机推荐
- flutter 多种情况tabbar高度问题,普通使用和嵌套使用高度问题(Tab)。
众所周知tabbar的高度是不可改变的.比如我们普通的写一个tabbar. 先上效果图: 代码: Scaffold( appBar: AppBar( title: Text("TabBarD ...
- java NIO原理和代码实践
一,先说java IO 1,线程阻塞:当线程调用write()或read()时,线程会被阻塞,直到有一些数据可用于读取或数据被完全写入. 2,面向流: 我们需要从流中读取一个或多个字节.它使用流来在数 ...
- sxt_(001_003)_spring_ioc
一.spring简介 Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架.Spring框架是由于软件开发的复杂性而创建的.Spring使用的是基本的JavaBean来完成以前只可 ...
- Timer VS DispatcherTimer
Timer是在ThreadPool线程池中执行的,每当计时器到期时,就会创建一个线程来执行事件处理程序.这种实现方式可能会导致一些问题,例如计时器事件处理程序可能会与主线程竞争资源,从而导致性能问题. ...
- vue自定义组件的总结(一)
1.定义组件时 <template> <input class="input" :type="type" :pla ...
- (0720) 【 表示 n'b0; 】
注意 花括号: (n+1)'b1 小括号:
- skype网络异常无法登录
在有些win7电脑上安装最新版skype软件后,打开skype软件后显示无法访问网络 检查网络及防火墙,确定无异常 最后排查原因定位到操作系统的根证书 发现系统缺少部分DigiCert的根证书 从其他 ...
- esp8266 -rtos-sdk-vscode-config
kiteconfig 工作区配置文件:hello_world.code-workspace { "folders": [ { &q ...
- 检测到远端rexec服务正在运行中
0.系统 AIX7 1.先备份 /etc/inetd.conf文件 2.vi /etc/inetd.conf vi /etc/inetd.conf ##给原来的行加上注释# # exec .... / ...
- 常用IBatis属性
<?xml version="1.0" encoding="utf-8" ?> <sqlMap namespace="GoodDet ...