最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Fetch API速查表:9个最常见的API请求

    正文概述 掘金(杭州程序员张张)   2020-12-01   329

    对于Fetch API我相信你已经用过它们很多次了,但是你是否还记得语法?如果能避免在旧项目中寻找半年前使用过的特定请求的语法,岂不更好?

    在本文中,我将列出9个最常见的Fetch API请求,在你忘记API的时候可以翻出来查看。​

    为什么要使用Fetch API?

    如今,我们被所有提供漂亮的SDK的服务宠坏了,这些SDK将实际的API请求抽象化,我们只需要使用典型的语言结构来请求数据,而不关心实际的数据交换。

    但是,如果你所选择的平台没有SDK怎么办?或者如果你同时构建服务器和客户端呢?在这些情况下,你需要自己处理请求,这就是使用Fetch API的方法。

    使用Fetch API的简单GET请求

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

    使用Fetch API的简单POST请求

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

    在Fetch API中使用授权令牌 (Bearer) 进行GET

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

    在Fetch API中使用查询字符串数据进行GET

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

    在Fetch API中使用CORS进行GET

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

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

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

    在Fetch API中使用表单数据进行POST

    let formData = new FormData();
    formData.append('field1', 'value1');
    formData.append('field2', 'value2');
    
    fetch('{url}', {
      method: 'post',
      body: formData
    }).then(response => console.log(response));
    

    在Fetch API中使用JSON数据进行POST

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

    在Fetch API中使用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);
    }
    

    总结

    这些示例应该涵盖了大多数情况。

    我是否错过了什么,一个你每天都在使用的请求?或者是其他你正在苦恼的事情?请在评论区上告诉我。

    最后,你也可以以可打印的形式获得这份备忘单:ondrabus.com/fetch-api-c…


    原文:www.freecodecamp.org/
    作者:Ondrej Polesny


    起源地下载网 » Fetch API速查表:9个最常见的API请求

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元