zoukankan      html  css  js  c++  java
  • reqwest与fetch的使用

    reqwest的使用

    很多人看到reqwest,第一感觉就是:“哎,哥们你写错了吧,应该是request吧。” 额,表示很伤〜真的没写错.

    reqwest的使用,官方npm包说的很直白。

    It's AJAX
    All over again. Includes support for xmlHttpRequest, JSONP, CORS, and CommonJS Promises A.

    普通的reqwest写法跟ajax大抵差不多,像下面这样:

    // 普通请求
    reqwest({
        url: 'path/to/json'
      , type: 'json'
      , method: 'post'
      , data: { foo: 'bar', baz: 100 }        // 入参
      , error: function (err) { }
      , success: function (resp) {
          qwery('#content').html(resp.content)
        }
    })
    
    // jsonp请求
    reqwest({
        url: 'path/to/json'
      , type: 'jsonp'
      , method: 'get'                    // jsonp请求,method可不写,写成post,依然会被浏览器默认为get
      , error: function (err) { }
      , success: function (resp) {
          qwery('#content').html(resp.content)
        }
    })
    
    // cors请求
    reqwest({
        url: 'path/to/json'
      , type: 'json'
      , method: 'post'
      , contentType: 'application/x-www-form-urlencoded'
      , crossOrigin: true                  // cors跨域,服务端与客户端存在cookie等数据凭证交互时需要设置crossOrigin,withCredentials
      , withCredentials: true
      , error: function (err) { }
      , success: function (resp) {
          qwery('#content').html(resp.content)
        }
    })
    
    // promise写法
    reqwest({
        url: 'path/to/data.jsonp?foo=bar'
      , type: 'jsonp'
      , jsonpCallback: 'foo'
    })
      .then(function (resp) {
        qwery('#content').html(resp.content)
      }, function (err, msg) {
        qwery('#errors').html(msg)
      })
      .always(function (resp) {
        qwery('#hide-this').hide()
      })

    fetch的使用

    // 请求html 
    fetch('/users.html')
      .then(function(response) {
        return response.text()              // 将内容将化成字符串类型数据
      }).then(function(body) {
        document.body.innerHTML = body
      })
    
    // 提交json数据
    fetch('/users', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({                // fetch的入参数据跟reqwest的data不太一样,是body
        name: 'Hubot',
        login: 'hubot',
      })
    })
    
    // cors请求
    fetch('https://example.com:1234/users', {
      mode: "cors",                       // 设置为支持跨域请求
      credentials: 'include'              // 设置允许发送相关凭证
    })
    
    fetch的mode配置项有3个值,如下:
    
    same-origin:该模式是不允许跨域的,它需要遵守同源策略,否则浏览器会返回一个error告知不能跨域;
    其对应的response type为basic。
    
    cors: 该模式支持跨域请求,顾名思义它是以CORS的形式跨域;当然该模式也可以同域请求不需要后端额外的CORS支持;
    其对应的response type为cors。
    
    no-cors: 该模式用于跨域请求但是服务器不带CORS响应头,也就是服务端不支持CORS;这也是fetch的特殊跨域请求方式;
    其对应的response type为opaque
    
    
    // fetch不支持jsonp,那么需要叫上他的兄弟fetchJsonp
    fetchJsonp('/users.jsonp')
      .then(function(response) {
        return response.json()
      }).then(function(json) {
        console.log('parsed json', json)
      }).catch(function(ex) {
        console.log('parsing failed', ex)
      })

      

  • 相关阅读:
    从大量的IP访问记录中找到访问次数最多的IP
    打赏功能的实现
    MFC通过ODBC连接Mysql程序
    VC++中使用MFC通过ADO连接数据库
    MySQL 5.1参考手册
    MFC ADO mysql 经验总结一
    VC连接MySQL
    VC连接MySQL
    MFC使用ADO对象开发数据库应用程序
    MFC中用Ado连接数据库
  • 原文地址:https://www.cnblogs.com/mickybg/p/8059691.html
Copyright © 2011-2022 走看看