js原生fetch方法??小抄级汇总

fetch

XMLHttpRequest 是一个设计粗糙的 API,不符合关注分离(Separation of Concerns)的原则,配置和调用方式非常混乱,而且基于事件的异步模型写起来也没有现代的 Promise,generator/yield,async/await 友好。

Fetch 的出现就是为了解决 XHR 的问题。同时简洁的语法,基于标准 Promise 的实现,支持 async/await等特性更是如虎添翼,废话不多说,上示例。

  fetch('请求的地址',{
    method:'请求方法',
    headers:{ 'content-type':'设置请求头' },
    cache:'是否缓存这个请求',
    credentials:'要不要携带cookie',
    mode:'给请求定义一个模式确保请求有效',
  }).then(res=>{
    // res可以使用body方法和属性
    res.type; // response的类型
    res.url;// respnse的URL
    res.staus;// 状态码
    res.ok;//response成功还是失败
    res.headers;// 次response所关联的Headres对象
    res.clone();// 创建一个response的克隆
    res.arrayBuffer() // 返回一个被解析为 ArrayBuffer 格式的promise对象
    res.blob() // 返回一个被解析为 Blob 格式的promise对象
    res.formData() // 返回一个被解析为 FormData 格式的promise对象
    res.json() // 返回一个被解析为 Json 格式的promise对象
    res.text() // 返回一个被解析为 Text 格式的promise对象resp.arrayBuffer() // 返回一个被解析为 ArrayBuffer 格式的promise对象
    res.blob() // 返回一个被解析为 Blob 格式的promise对象
    res.formData() // 返回一个被解析为 FormData 格式的promise对象
    res.json() // 返回一个被解析为 Json 格式的promise对象
    res.text() // 返回一个被解析为 Text 格式的promise对象
  }).then(res => {
    console.log('打印请求成功返回来的数据',res)
  }).catch(err => {
    console.log('打印错误信息',err)
  })

属性详解

  • method - GET, POST, PUT, DELETE, HEAD
  • url - 请求的url
  • headers - 对应的Header对象
  • referrer - 请求的referrer信息
  • mode - 模式,可选类型有cors, no-cors, same-origin
  • credentials - 是否携带cookie,可选类型有omit, same-origin
  • redirect - follow, error, manual
  • integrity - subresource integrity value
  • cache - 缓存模式,可选类型有default, reload, no-cache
  • resp.type : 类型,支持basic, cors
  • resp.arrayBuffer() : 返回一个promise,resolves是一个ArrayBuffer

发送一些普通的JSON数据

  fetch('url',{
    method:'POST',
    body: JSON.stringify({
      key1:"value",
      key2:"value"
    })
  })

获取图片

  fetch('url').then(res => {
    return res.blob()
  }).then(res => {
    document.querySelector('img').src = URL.createObjectURL(imageBlob)
  })

发送表单数据

    var form = document.querySelector('form');
    fetch('/xxx', {
        method: 'post',
        body: new FormData(form)
    });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值