前端进行网络请求的三种方式
XHR技术
基于XMLHTTPRequest技术实现的,通过调用原生的XML对象实现的,非常的冗余==>ajax技术
ajax
Jquery.$ajax
1 | // 有参数,则增加data字段,有请求头则增加headers字段,有错误处理增加error字段 |
- Get: 参数放到querystring中
- Post:参数放到body中, 默认application/x-www-form-urlencoded
axios(推荐)
1 | // axios默认是json类型的提交 |
POST默认的提交格式为json,而不是表单www-form-urlencode
1 | axios({ |
axios的get/post/put/delete等等都可以简写
1 | axios.post(url,data).then(callback) |
fetch
- 目前主流浏览器都支持的技术,除了IE
- Network捕捉到的Type不再是XHR,而直接是fetch
- promise特性
1 | fetch("http://localhost:9090", { |
注意:
- 跟其他两个的参数为
({parmas})
不一样,<"url", {params}>
- 参数不是通过data提交的,而是body,写data无效
请求的组成
- 请求头:
- url: uri[+query]
- method:
- header:
- Http Header里的Content-Type一般有这三种:
- application/x-www-form-urlencoded:数据被编码为名称/值对。这是标准的编码格式。(默认的)
- multipart/form-data: 数据被编码为一条消息,页上的每个控件对应消息中的一个部分。
- text/plain: 数据以纯文本形式(text/json/xml/html)进行编码,其中不含任何控件或格式字符。postman软件里标的是RAW。
- Http Header里的Content-Type一般有这三种:
- 协议
- 请求体body
- post请求时提交的数据
from:【ajax科普】【前端】fetch、axios、jquery的ajax用法
模拟服务器文件: 链接:https://pan.baidu.com/s/1nMZRcPYY4RIW_4Rvc2mDCw 提取码:wxw4
附录
测试所用express服务器代码
1 | var app = express() |
不写html代码,直接在浏览器里运行测试:
地址栏中输入:data:text/html,
后跟内容,如
data:text/html,<h1>hello</h1>
会显示大的hellodata:text/html, <script src="..."></script>
Author: Mrli
Link: https://nymrli.top/2021/12/02/前端进行网络请求的三种方式/
Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.