查看原文
其他

Fetch API速查表:9个最常见的API请求

张张 前端全栈开发者 2022-07-09

在131期的文章《Fetch还是Axios——哪个更适合HTTP请求?》中我对比了Axios,在小型项目的情况下,使用Fetch API只需要几个简单的API调用,Fet是一个很不错的解决方案。
对于Fetch API我相信你已经用过它们很多次了,但是你是否还记得语法如果能避免在旧项目中寻找半年前使用过的特定请求的语法,岂不更好?
在本文中,我将列出9个最常见的Fetch API请求,在你忘记API的时候可以翻出来查看。

为什么要使用Fetch API?

如今,我们被所有提供漂亮的SDK的服务宠坏了,这些SDK将实际的API请求抽象化,我们只需要使用典型的语言结构来请求数据,而不关心实际的数据交换。
但是,如果你所选择的平台没有SDK怎么办?或者如果你同时构建服务器和客户端呢?在这些情况下,你需要自己处理请求,这就是使用Fetch API的方法。

发送简单GET请求

fetch('{url}').then(response => console.log(response));

发送简单POST请求

fetch('{url}', {
method: 'post'
}).then(response => console.log(response));

使用授权令牌进行GET

fetch('{url}', {
headers: {
'Authorization': 'Basic {token}'
}
}).then(response => console.log(response));

使用查询字符串数据进行GET

fetch('{url}?var1=value1&var2=value2')
.then(response => console.log(response));

使用CORS进行GET

fetch('{url}', {
mode: 'cors'
}).then(response => console.log(response));

使用授权令牌和查询字符串数据进行POST

fetch('{url}?var1=value1&var2=value2', {
method: 'post',
headers: {
'Authorization': 'Bearer {token}'
}
}).then(response => console.log(response));

使用表单数据进行POST

let formData = new FormData();
formData.append('field1', 'value1');
formData.append('field2', 'value2');

fetch('{url}', {
method: 'post',
body: formData
}).then(response => console.log(response));

使用JSON数据进行POST

fetch('{url}', {
method: 'post',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
'field1': 'value1',
'field2': 'value2'
})
})
.then(response => console.log(response));

使用JSON数据和CORS进行POST

fetch('{url}', {
method: 'post',
mode: 'cors',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
'field1': 'value1',
'field2': 'value2'
})
})
.then(response => console.log(response));

如何处理Fetch API请求的结果

Fetch API返回一个Promise。这就是为什么我总是使用 .then() 和回调函数来处理响应的原因:
fetch(...).then(response => {
// process the response
}

但是,如果您处于异步函数中,也可以等待结果:

async function getData(){
let data = await fetch(...);
// process the response
}

现在让我们看一下如何从响应中提取数据:

如何检查Fetch API响应的状态码

发送POST,PATCH和PUT请求时,我们通常对返回状态代码感兴趣:

fetch(...).then(response => {
if (response.status == 200){
// all OK
} else {
console.log(response.statusText);
}
});

如何获取Fetch API响应的简单值

某些API端点可能会发回使用您的数据创建的新数据库记录的标识符:

var userId;

fetch(...)
.then(response => response.text())
.then(id => {
userId = id;
console.log(userId)
});

如何转换Fetch API响应的JSON数据

但是在大多数情况下,您会在响应正文中接收JSON数据:

var dataObj;

fetch(...)
.then(response => response.json())
.then(data => {
dataObj = data;
console.log(dataObj)
});
请记住,只有在两个Promises都解决后,你才能访问数据。这有时会让人有点困惑,所以我总是喜欢使用async方法并等待结果。
async function getData(){
var dataObj;

const response = await fetch(...);
const data = await response.json();
dataObj = data;
console.log(dataObj);
}

总结

这些示例应该涵盖了大多数情况。
我是否错过了什么,一个你每天都在使用的请求?或者是其他你正在苦恼的事情?请在评论区上告诉我。
最后,你也可以以可打印的形式获得这份备忘单:https://ondrabus.com/fetch-api-cheatsheet

原文:https://www.freecodecamp.org/news/fetch-api-cheatsheet/
作者:Ondrej Polesny

粉丝福利

132期留言+在看幸运用户:晨晨虎,速找我领取红包。

临走前留下,今天的福利

  • 福利1:《Vue3.0+TS仿知乎专栏》获取资源请在公众号对话框中回复关键字:006,如果没有关注请扫下面的二维码
  • 福利2:在看+留言,我随机抽取一位认真留言的小伙伴,给他发一个5~10不等的红包奖励

推荐阅读


- END -

点赞 + 在看 + 留言,下一个幸运儿就是你!
走心的分享更容易被抽中~
开奖时间 下期文末

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存