Axios
基于Promise的htt客户端,能够在浏览器和node.js环境中运行
特点:
- 在浏览器端发送Ajax申请
- 在node.js中发送http申请
- 反对Promise的相干操作
- 申请响应拦截器
- 对申请响应和数据转化
- 勾销申请
- 主动转化json数据
-
对跨站攻打进行爱护
搭建环境
- 首先在电脑装置node.js
- 关上编辑器(vscode)创立json-server目录,并在此目录下创立 db.json 文件
-
关上vscode命令终端
- 输出: npm install -g json-server (回车装置)
-
在db.json内输出一些数据如:
{ "posts": [ { "id": 1, "title": "json-server", "author": "typicode" } ], "comments": [ { "id": 1, "body": "some comment", "postId": 1 } ], "profile": { "name": "typicode" } }
- 在db.json文件(重要)管制终端下 输出 json-server
- 实现
根本应用
基于搭建好相干环境并且在script标签内运行
GET POST PUT DELETE
GET
<div class="container">
<h2 class="page-header">根本应用</h2>
<button class="btn btn-primary">发送GET申请</button>
<button class="btn btn-warning">发送POST申请</button>
<button class="btn btn-success">发送PUT申请</button>
<button class="btn btn-danger">发送DELETE申请</button>
</div>
<script>
// 获取按钮
const btns = document.querySelectorAll('button');
第一个
btns[0].onclick = function() {
// 发送Ajax申请
axios({
// 申请类型
method: 'GET',
//URL
url: 'http://localhost:3000/posts/2'
}).then(response => {
(response);
})
}
POST
btns[1].onclick = function() {
axios({
//发送post申请
method: 'POST',
url: 'http://127.0.0.1:3000/posts',
//设置申请体
data: {
title: "学习冲冲冲,我爱学习",
author: "麻子"
}
}).then(response => {
console.log(response);
})
}
PUT
//更新数据
btns[2].onclick = function() {
axios({
//发送PUT申请.PUT须要传id
method: 'PUT',
url: 'http://127.0.0.1:3000/posts/3',
//设置申请体
data: {
title: "学习冲冲冲,我爱学习",
author: "里斯"
}
}).then(response => {
console.log(response);
})
}
DELETE
//删除数据
btns[3].onclick = function() {
axios({
//发送delete申请
method: 'delete',
url: 'http://127.0.0.1:3000/posts/3',
//设置申请体
}).then(response => {
console.log(response);
})
}
</script>
其余应用
//get buutons
const btns = document.querySelectorAll('button')
//发送get申请
btns[0].onclick = function() {
//axios()
axios.request({
method: 'GET',
url: 'http://localhost:3000/comments'
}).then(response => {
console.log(response);
})
}
btns[1].onclick = function() {
//axios() 发送post申请
axios.post(
'http://localhost:3000/comments', {
"body": "sker,haahah",
"postId": 2
}).then(response => {
console.log(response);
})
}
axios默认配置
对反复配置的编写
axios.defaults.method = 'GET'; //设置默认申请类型为GET
axios.defaults.baseURL = 'http//localhost:3000'; //设置根底URL
axios.defaults.params = {id:100};
axios.defaults.timeout = 3000;
btns[0].onclick = function(){
axios({
url:'/posts'
}).then(response=>{
console.log(response);
})
}
axios拦截器
申请拦截器:在发送申请之前,借助一些函数对申请的参数和内容做一些解决和检测,没问题就发,有问题就进行和勾销。
响应拦截器:当服务器返回后果后,在处理结果前进行预处理,没问题再交由自定义解决,有问题在响应拦截器解决。
//Promise
// 设置申请拦截器
axios.interceptors.request.use(function(config) {
console.log('申请拦截器')
//
return config;
}, function(error) {
console.log('申请拦截器失败')
return Promise.reject(error);
});
// 设置响应拦截器
axios.interceptors.response.use(function(response) {
console.log('响应拦截器胜利')
return response;
}, function(error) {
console.log('响应拦截器失败')
return Promise.reject(error);
});
// 发送申请
axios({
method: 'GET',
url: 'http://localhost:3000'
}).then(response => {
console.log(response);
})
发表回复