Fetch 是一种较新的、基于承诺的 API,它允许我们执行 Ajax 请求,而无需处理与XMLHttpRequest相关的所有麻烦。正如您将在本文中看到的,Fetch 非常易于使用和操作,并且大大简化了从 API 获取资源的过程。此外,它现在已在所有现代浏览器中得到支持,因此使用 Fetch 真的是一件轻而易举的事。
获取请求
让我们演示一个简单的 GET 请求,得到我们自己从JSONPlaceholder API中获取了一些虚拟数据
fetch('https://jsonplaceholder.typicode.com/users')
.then(res => res.json())
.then(res => res.map(user => user.username))
.then(userNames => console.log(userNames));输输出将是如下的用户名数组:["Bret", "Antonette", "Samantha", "Karianne", "Kamren", "Leopoldo_Corkery", "Elwyn.Skiles", "Maxime_Nienow", "Delphine", "Moriah.Stanton"]
鉴于我们期望 JSON 响应,我们首先需要调用json()方法来转换回复对象变成我们可以与之交互的对象。text()如果我们期望 XML 响应,则可以使用它
发布、放置和删除请求
要发出除GET之外的请求,请将对象作为第二个参数传递给 fetch 调用,其中包含要使用的方法以及任何所需的标头和请求正文:
const myPost = {
title: 'A post about true facts',
body: '42',
userId: 2
}
const options = {
method: 'POST',
body: JSON.stringify(myPost),
headers: {
'Content-Type': 'application/json'
}
};
fetch('https://jsonplaceholder.typicode.com/posts', options)
.then(res => res.json())
.then(res => console.log(res));JSONPlaceholder将附加 ID 的 POST 数据发回给我们:
Object {
body: 42,
id: 101,
title: "A post about true facts",
userId: 2
}错误处理
使用 Fetch API 进行错误处理时有一个问题(双关语