1.前端访问服务器几种方式
1. 直接在地址栏输入url
2. HTML: a标签的href属性
3. JS : window.location.href = ''
document.querySelector('.box').addEventListener('click',function(){
window.location.href = 'http://www.itheima.com'
})
4. ajax技术 : 在网页不跳转的情况下,向服务器发送请求
作用 : 局部刷新
2.Ajax相关的基础概念
ajax技术 : 可以在页面不刷新的情况下 向服务器请求数据
ajax技术作用 : 局部刷新
3.Ajax 请求数据的 5 种方式

4.axios 的基础语法

5.GET 请求的查询参数
查询回来的是所有图书的列表数据,如果想指定查询的条件,可以通过 params 选项来指定查询的参数:

案例:ajax发送get请求
<body>
<button>按钮</button>
<script src="./lib/axios.min.js"></script>
<script>
document.querySelector('button').addEventListener('click', function () {
axios({
method: 'get',
url: 'http://www.liulongbin.top:3009/api/getbooks',
})
.then((res) => {
console.log(res.data);
})
})
</script>
</body>

6.在 GET 请求中携带多个查询参数
如果要携带多个参数,只需要在 params 对象中指定多个查询参数项即可

案例:# GET 请求中携带多个查询参数
<body>
<button>按钮</button>
<script src="./lib/axios.min.js"></script>
<script>
document.querySelector('button').addEventListener('click', function () {
axios({
method: 'get',
url: 'http://www.liulongbin.top:3009/api/getbooks',
params: {
id: 1,
bookname: "西游记"
}
})
.then((res) => {
console.log(res.data);
})
})
</script>
</body>

案例:GET 请求中携带多个查询参数在 URL 地址的末尾查询参数之间使用 & 符号进行分隔
<body>
<button>按钮</button>
<script src="./lib/axios.min.js"></script>
<script>
document.querySelector('button').addEventListener('click', function () {
axios({
method: 'get',
url: 'http://www.liulongbin.top:3009/api/getbooks?id=1&bookname=西游记',
})
.then((res) => {
console.log(res.data);
})
})
</script>
</body>
7.编码和解码
浏览器内置了 encodeURIComponent() 和 decodeURIComponent() 两个方法,用来实现 URL 的编码和解码处理

<script>
let str1 = '西游记'
编码-浏览器会自动操作,不用程序员关系
let str2 = encodeURIComponent(str1)
console.log(str2)
解码-浏览器会自动操作,不用程序员关系
let str3 = decodeURIComponent('%E6%B8%B8')
console.log(str3);
</script>

8.响应数据解构
<body>
<script src="./lib/axios.min.js"></script>
<script>
let {
data: res
} = {
config: 1,
data: 2,
headers: 3
}
console.log(res);
axios({
method: 'get',
url: 'http://www.liulongbin.top:3009/api/getbooks',
params: {
id: 1
}
}).then(({
data: res
}) => {
console.log(res.data)
console.log(res.code);
console.log(res.msg);
})
</script>
</body>

9.axios 发起 POST 请求

使用 axios 发起 POST 请求时,只需要将 type 属性的值设置为 'POST' 即可
<body>
<button>按钮</button>
<script src="./lib/axios.js"></script>
<script>
document.querySelector('button').onclick = function () {
axios({
method: 'post',
url: 'http://www.liulongbin.top:3009/api/addbook',
data: {
bookname: '三体地球往事',
author: '刘慈欣',
publisher: '武汉人民出版社'
}
}).then(({ data: res }) => {
console.log(res);
});
}
</script>
</body>

10.Ajax 的基础用法,在函数的形参中使用解构赋值
使用解构赋值,可以轻松地获取到 axios 请求回来的真实数据。示例代码如下:

11.接口的概念
使用 Ajax 请求数据时,被请求的 URL 地址,就叫做数据接口(简称:接口或 API 接口)
接口文档的格式有很多,txt,word,excel,md等.... 现在最常用的是 html 格式文档
接口文档的格式

12.GET 和 POST 提交数据的区别
GET 请求只能在 URL 中携带少量的数据
POST 请求适合用来提交大量的数据
POST 为了能够提交大量的数据,所以没有把数据拼接到 URL 的末尾;而是放到了独立的“请求体”中
13.请求报文和响应报文
请求报文规定了客户端以什么格式把数据发送给服务器
响应报文规定了服务器以什么格式把数据响应给客户端
请求报文由请求行(request line)、请求头部( header )、空行 和 请求体 4 个部分组成
响应报文由状态行、响应头部、空行 和 响应体 4 个部分组成
注意:
在浏览器中,GET 请求比较特殊,它只有请求头,没有请求体。
在浏览器中,POST、PUT、PATCH、DELETE 请求既有请求头,又有请求体
14.http 响应状态码
概念:http 响应状态码(Status Code)由三位数字组成,用来标识响应成功与否的状态
作用:客户端浏览器根据响应状态码,即可判断出这次 http 请求是成功还是失败了

http 响应状态码 Vs 业务状态码
1. 所处的位置不同:
在响应头的状态行中所包含的状态码,叫做“响应状态码”
在响应体的数据中所包含的状态码,叫做“业务状态码”

2. 表示的结果不同:
响应状态码只能表示这次请求的成功与否(成功地失败了)
业务状态码用来表示这次业务处理的成功与否

3. 通用性不同:
响应状态码是由 http 协议规定的,具有通用性。每个不同的状态码都有其标准的含义,不能乱用。
业务状态码是后端程序员自定义的,不具有通用性


同步和异步区别:
Ajax是异步可以刷新一部分页面