再谈from属性EncType与axios分装-源码浅析-源码剖析
2024-02-18 16:38:31
如今,在远古ie兴盛的时代,基本是fromData提交数据,ajax+jquer,前端的历史真是说来话长。
从from属性EncType讲起
from属性用于指定表单数据的编码方式,常见的编码方式有application/x-www-form-urlencoded和multipart/form-data。
- application/x-www-form-urlencoded :将表单数据编码为键值对字符串,然后以“&”符号连接,例如:
name=John+Doe&email=johndoe@example.com
- multipart/form-data :将表单数据编码为一系列的二进制数据块,每个数据块包含一个表单字段的数据,例如:
--boundary
Content-Disposition: form-data; name="name"
John Doe
--boundary
Content-Disposition: form-data; name="email"
johndoe@example.com
--boundary--
EncType属性用于指定表单数据的编码方式,它可以是"application/x-www-form-urlencoded"或"multipart/form-data"。
再谈axios分装
axios是一个基于Promise的HTTP库,它可以在浏览器和Node.js中使用。axios提供了简单而强大的API,可以轻松地发送HTTP请求和处理响应。
axios分装是指将axios库封装成一个更易于使用的库,以便于在不同的项目中重复使用。axios分装通常会提供一些常用的功能,例如:
- 统一的请求和响应处理
- 请求拦截器和响应拦截器
- 自动重试和超时处理
- cookie和身份验证处理
源码浅析
为了更好地理解from属性EncType与axios分装,我们来看一下axios的源码。
在axios的源码中,有一个名为createRequest()的方法,这个方法用于创建HTTP请求对象。在createRequest()方法中,有一个名为transformRequest()的方法,这个方法用于将请求数据转换为HTTP请求体。
transformRequest()方法会根据请求头的Content-Type属性来决定如何转换请求数据。如果Content-Type属性为"application/x-www-form-urlencoded",则transformRequest()方法会将请求数据转换为键值对字符串。如果Content-Type属性为"multipart/form-data",则transformRequest()方法会将请求数据转换为一系列的二进制数据块。
总结
from属性EncType用于指定表单数据的编码方式。axios分装是指将axios库封装成一个更易于使用的库。通过对axios源码的剖析,我们可以更好地理解这两个概念在实际应用中的用法。