本节目标
熟练使用axios
- 介绍
- URL
- HTTP
介绍
Axios是专注于网络数据请求的库
基本使用
- 引入axios
- 使用axios函数, 传入配置对象, 接受服务器响应数据
<body>
<p></p>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<script>
// 需求: 请求资源地址, 展示数据到页面
axios({
url: 'http://hmajax.itheima.net/api/province'
}).then((result) => {
const res = result.data.list.join('<br />')
document.querySelector('p').innerHTML = res
})
</script>
</body>
url
统一资源定位符(URL), 简称网页地址, 是因特网上标砖的资源地址
例如
组成
协议
http协议: 超文本传输协议, 规定浏览器和服务器之间传输数据的格式
协议范围: http/https/...
域名
域名: 服务器在互联网中的唯一标识
端口
端口: 标记服务器里不同功能的服务程序
区分一台服务中的不同程序
说明
- 端口范围: 0-65535之间的任意整数
- http协议, 默认访问80端口
- 0-1023和一些特定端口号已经被占用, 我们自己的服务程序要避开
资源路径
资源路径: 标记资源在服务器中的具体位置
查询参数
浏览器提供给服务器的额外信息, 让服务返回指定的数据
说明
- 指定格式: http://xxxx.com/xxx/xxx?参数名1=值1&参数名2=值2
- 在axios中: 通过params选项, 传送查询参数
示例
<body>
<p></p>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<script>
// 需求: 请求资源地址, 展示数据到页面
axios({
url: 'http://hmajax.itheima.net/api/city',
params: {
pname: '山东省'
}
}).then((result) => {
const res = result.data.list.join('<br />')
document.querySelector('p').innerHTML = res
})
</script>
</body>
请求方法
对服务器资源, 要执行的操作
常用请求方法
- get 获取资源
- post 提交资源
- put 修改资源(全部)
- delete 删除资源
- patch 修改资源(不分)
说明
- 无论原生还是axios, 都是通过method选项, 配置请求方法
- get是默认的请求方式
body参数
浏览器提供给服务器的额外信息, 信息放在请求体里面
说明
- 无论原生还是axios, 都是通过data选项, 传递请求体参数
- post请求可以传递请求体参数,也可以传递查询参数
- get请求只能传递查询参数
示例
<body>
<button class="btn">注册用户</button>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<script>
/*
目标: 点击按钮, 通过axios提交用户和密码, 完成注册
*/
document.querySelector('.btn').addEventListener('click', function () {
axios({
url: 'http://hmajax.itheima.net/api/register',
method: 'post',
data: {
username: 'wsdsg666',
password: 'wsdsg666'
}
}).then((result) => {
console.log(result);
})
})
</script>
</body>
错误处理
axios提供了catch函数, 可以捕获请求出现的错误
说明
catch函数捕获的是axios错误信息
示例
<body>
<button class="btn">注册用户</button>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<script>
/*
目标: 处理请求可能出现的错误
*/
document.querySelector('.btn').addEventListener('click', function () {
axios({
url: 'http://hmajax.itheima.net/api/register',
method: 'post',
data: {
username: 'wsdsg666',
password: 'wsdsg666'
}
}).then((result) => {
// 成功
console.log(result);
}).catch((err) => {
// 失败
console.log(err)
alert(err.response.data.message)
})
})
</script>
</body>
HTTP
请求报文
浏览器按照HTTP协议的要求, 把信息按照固定格式, 整理成请求报文, 发送给服务器
组成
- 请求行: 包含请求方式, 请求URL, 协议信息
- 请求头: 以键值对的格式携带附加信息, 重要的是Content-Type属性
- 请求空行: 作用是分割请求头和请求体
- 请求体: 携带给服务器的数据
响应报文
服务器按照HTTP协议的要求, 把信息按照固定格式, 整理成响应报文, 返回给浏览器
组成
- 响应行: 包含协议信息, HTTP状态码, 状态信息
- 响应头: 以键值对的格式携带附加信息, 重要的是Content-Type属性
- 响应空行: 作用是分割响应头和响应体
- 响应体: 返回的数据
状态码: 用来表明请求的状态
接口文档
接口: 使用ajax请求数据时,被请求的url地址,就叫做数据接口
描述接口的文档, 记录了使用前后端交互需要的URL, 请求方式, 请求参数等信息
本课程的接口文档 欢迎使用 - B站-AJAX和黑马头条-数据管理平台