前端知识点(六)Ajax

发布时间 2023-07-04 08:29:19作者: 梦想三旬

1 . 客户端与服务器
客户端
在前端开发中 : 客户端特指 “Web 浏览器” 。

实际上线后 : 只要可以访问服务器的设备都属于客户端(手机、平板、电脑中的各种软件都可以是客户端)。

服务器
概念 : 服务器是给客户端提供服务的设备。

作用 : 在用户上网过程中,所有的网络资源不会存储到客户端, 需要从服务器上请求,请求服务器专门负责存放资源和对外提供服务。

客户端与服务器通信的过程
过程分为 : 请求 、响应 两个步骤

请求 : 客户端通过网络向服务器要资源的过程
响应 : 服务器通过网络给客户端发送资源的过程
请求响应.png

URL 地址
全称是统一资源定位符

作用 : 表示服务器上每个资源的访问路径
组成 : 一个完整的url地址分为 协议、域名(IP地址)、端口号、资源存放路径。
协议 : 用来规范数据传递接收的格式。常见 http 和 https
主机名 : 又称域名,对应一个 IP 地址,用来找到电脑主机在网络中存放的位置。
端口号 : 电脑中程序的出入口,取值范围 0~65535 之间的数字。用来找到对应程序的。(80 为 http,443 为 https)
资源存放路径 : 通过程序找到资源在服务器中的具体存放地址。
掘金url.png
注意 :

在 http 协议中,如果 URL 地址中的端口号是 80,则 :80 端口可以省略不写
在 https 协议中,如果 URL 地址中的端口号是 444,则 :443 端口可以省略不写
https://juejin.cn:443/user/642585808088190
https://juejin.cn/user/642585808088190
2 . Ajax
背景 :
服务器对外提供的所有内容都属于资源。而网页中的数据,也是服务器对外提供的一种资源。要获取数据就需要用 Ajax 技术

什么是 Ajax
Ajax 全称是 : Asynchronous Javascript And XML

是浏览器中的技术:用来实现客户端网页请求服务器的数据。。
Ajax 的作用
异步发送 JavaScript 和 XML

Ajax 请求数据的 5 种方式
POST : 向服务器推送数据
GET : 从服务器获取数据
DELETE : 删除服务器上的数据
PUT : 更新服务器上的数据(侧重于完整更新:例如更新用户的完整信息)
PATCH : 更新服务器上的数据(侧重于部分更新:例如只更新用户的手机号)
3 . axios
什么是 axios
前端使用最多的 数据请求 库

中文官网地址:http://www.axios-js.com/
英文官网地址:https://www.npmjs.com/package/axios

axios 使用方法
本地 axios.js 文件资源引入
在线 axios 资源引入,方法同上
模块化导入
具体使用查看官网文档
axios 的基础语法
axios 发起请求, .then 接收处理响应

method : 请求的类型 ( post、get… )
url : 请求的 URL 地址
params : 用于传递参数 ( get 请求的查询参数 ) ,没有参数可以省略
data : 用于传递参数 ( post 请求体参数 )
.then((res) => {成功后执行的代码} : 成功之后的回调函数
形参中的 res 是请求成功之后拿到的结果 ( 请求的数据也在里面 )
函数体 中是请求成功后执行的代码 ( 可用于操作数据 )
axios({
method: '请求的类型',
url: '请求的URL地址'
}).then((result) => {})
axios 发起 get (无参) 请求

<!-- 引入本地资源的 axios.js 文件资源 --> 
<script src="./lib/axios.js"></script>
<script>
    // 绑定事件
    document.querySelector('button').onclick = function () {
        // 发起ajax中的get请求
        axios({
            method: 'GET',
            url: '服务器路径'
        }).then((res) => {
            console.log(res.data);
        }) 
    }
</script>

axios 发起 get (带参) 请求
axios({
method: 'GET',
url: '服务器路径',
params: {
id: 1,
name: '响响'
}
}).then(function (res) {
console.log(res.data);

   })

GET 请求的查询参数本质:
会以 ? 键=值 的形式拼接到 URL 地址的末尾,多个查询参数之间使用 & 符号进行分隔

http://服务器路径?id=1&name=响响
axios({
method: 'GET',
// GET参数本质,就是在路径后面 ? 后用 & 连接 = 分隔键值对
url: 'http://服务器路径?id=1&name=响响',
}).then(function (res) {
console.log(res.data);

   })

URL 编码 与 解码
什么是编码 : 在 URL 地址中不允许出现中文、空格等特殊字符,因此浏览器会自动对 URL 地址内的中文进行转换处理

http://服务器路径?id=1&name=响响
http://服务器路径?id=1&name=响响
浏览器内置方法 :

encodeURIComponent(): 编码
decodeURIComponent() : 解码
let str1 = '响响'
console.log(str1) // '响响'

    // 编码 
    let str2 = encodeURIComponent(str1)
    console.log(str2) // '%E5%93%8D%E5%93%8D'
    
    // 解码
    let str3 = decodeURIComponent(str2)
    console.log(str3) // '响响'
    console.log(decodeURIComponent('%E5%93%8D%E5%93%8D')) // '响响'

axios 发起 post 请求
POST 请求和 GET 请求不一样,POST 请求一定会有请求参数

POST 请求的功能就是向服务器推送数据
// 发起ajax
axios({
method: 'post',
url: '服务器路径',
data: {
id: 1,
name: '响响2'
}
}).then((res) => {
console.log(res)
})
4 . 请求报文和响应报文
客户端与服务器通信的过程是基于请求与响应的

请求报文 : 规定了客户端以什么格式把数据发送给服务器
响应报文 : 规定了服务器以什么格式把数据响应给客户端
请求报文
请求报文由 : 请求行(request line)、请求头部( header )、空行 和 请求体 4 个部分组成

请求报文格式 :
请求报文格式

浏览器中查看请求报文
浏览器中请求报文.png

响应报文
响应报文由 : 状态行、响应头部、空行 和 响应体 4
个部分组成

响应报文格式 :
响应报文.png

浏览器中查看响应报文
浏览器中的响应报文.png

注意点
在浏览器中,GET 请求比较特殊,它只有请求头,没有请求体。
在浏览器中,POST、PUT、PATCH、DELETE 请求既有请求头,又有请求体。
5 . http 响应状态码
什么是响应状态码
http 响应状态码(Status Code)由三位数字组成,用来标识响应成功与否的状态。

响应状态码的作用
客户端浏览器根据响应状态码,即可判断出这次 http 请求是成功还是失败了。

常见的响应状态码
200 (ok) : 请求已成功
201 (Created) : 资源在服务器已成功创建
304 (Not Modified) : 资源在客户端已缓存,响应体中不包含任何内容
400 (Bad Request) : 客户端请求方式或者请求参数有误,导致请求失败
401 (Unauthorized) : 客户端用户身份认证身份未通过,没能登录
404 (Unauthorized) : 客户端资源地址错误,导致服务器无法找到资源
500 (Internal Server Error) : 服务器内部错误,导致本次请求失败
http 响应状态码 和 业务状态码的区别;
所处的位置不同 :

在响应头的状态行中所包含的状态码,叫做 “响应状态码”
在响应体的数据中所包含的状态码,叫做 “业务状态码” 。
状态码位置不同.png
表示的结果不同 :

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

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