认识
2024年04月17日
一、认识
Fetch API
提供了一个获取资源的接口(包括跨网络通信)。对于任何使用过 XMLHttpRequest
的人都能轻松上手,而且新的 API
提供了更强大和灵活的功能集。
Fetch
提供了对 Request
和 Response
(以及其他与网络请求有关的)对象的通用定义。这将在未来更多需要它们的地方使用它们,无论是 service worker
、Cache API
,又或者是其他处理请求和响应的方式,甚至是任何一种需要你自己在程序中生成响应的方式(即使用计算机程序或者个人编程指令)。
二、语法
2.1 Promise
fetch(url,{
method: 'POST', // *GET, POST, PUT, DELETE, etc.
mode: 'cors', // no-cors, *cors, same-origin
cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
credentials: 'same-origin', // include, *same-origin, omit
headers: {
'Content-Type': 'application/json'
// 'Content-Type': 'application/x-www-form-urlencoded',
},
redirect: 'follow', // manual, *follow, error
referrerPolicy: 'no-referrer', // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url
body: JSON.stringify(data) // body data type must match "Content-Type" header
}).then(result=>{
console.log(result);
});
2.2 Async/Await
async function request(){
const response = await fetch(url,{
method: 'POST', // *GET, POST, PUT, DELETE, etc.
mode: 'cors', // no-cors, *cors, same-origin
cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
credentials: 'same-origin', // include, *same-origin, omit
headers: {
'Content-Type': 'application/json'
// 'Content-Type': 'application/x-www-form-urlencoded',
},
redirect: 'follow', // manual, *follow, error
referrerPolicy: 'no-referrer', // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url
body: JSON.stringify(data) // body data type must match "Content-Type" header
});
console.log(response);
}
三、对比
3.1 fetch
与 jQuery.ajax()
的区别?
-
从
fetch()
返回的Promise
不会因HTTP
的错误状态而被拒绝,即使响应是HTTP 404
或500
。相反,它将正常兑现(ok
状态会被设置为false
),并且只有在网络故障或者有任何阻止请求完成时,才拒绝。 -
除非你在
init
对象中设置(去包含)credentials
,否则fetch()
将不会发送跨源cookie
。