zoukankan      html  css  js  c++  java
  • react-native fetch 请求封装

    1.fetch 函数封装

    fetch.js

    /**
     * 请求头
     * @type {{Accept: string, Content-Type: string}}
     */
    const header = {
      'Accept': 'application/json',
      'Content-Type': 'application/json',
    };
     
    /**
     * 注意这个方法前面有async关键字
     * @param url  请求地址
     * @param body 请求参数
     * @param method 请求方法 大写
     * @param successCallBack  网络请求成功的回调
     * @param errorCallBack    出错的回调
     * @returns {Promise.<*>}
     */
    export function requestUrl(url, method, body, successCallBack: func, errorCallBack: func) {
      if ('GET' === method) {
        get(url, body, successCallBack, errorCallBack);
      }
      else {
        post(url, body, successCallBack, errorCallBack);
      }
    }
     
    /**
     * get请求
     */
    async function get(url, body, successCallBack, errorCallBack) {
      let str = toQueryString(body);
      if (str && str.length > 0) url += '?' + str;
      console.log(url);
      try {
        // 注意这里的await语句,其所在的函数必须有async关键字声明
        let response = await fetch(url);
        console.log('reqyestUrl:' + url);
        let responseJson = await response.json();
    
        return successCallBack(responseJson);
      } catch (error) {
        return errorCallBack(error);
        //console.error(error);
      }
    }
     
    /**
     * post请求
     */
    async function post(url, body, successCallBack, errorCallBack) {
      try {
        // 注意这里的await语句,其所在的函数必须有async关键字声明
        let response = await fetch(url, {
          method: 'POST',
          headers: header,
          body: JSON.stringify(body)
        });
    
        console.log('reqyestUrl:' + url);
        let responseJson = await response.json();
    
        return successCallBack(responseJson);
      } catch (error) {
        return errorCallBack(error);
      }
    }
     
     
    /**
     * 用于对对象编码以便进行传输
     * @param obj 对象参数
     * @returns {string} 返回字符串
     */
    function toQueryString(obj) {
      let str = '';
      if (obj) {
        let keys = [];
        for (let key in obj) {
          keys.push(key);
        }
        keys.forEach((key, index) => {
          str += key + '=' + obj[key];
          if (index !== keys.length - 1) {
            str += '&';
          }
        });
      }
      return str;
    }

    .

  • 相关阅读:
    EMF介绍系列(一、EMF与MDA)
    EMF介绍系列(四、枚举类型、自定义类型和Map)
    使用osgi.util.NLS简化资源文件访问
    2012 定制化产品探讨(周金根).pdf
    敏捷个人理念与模型PPT及今年唯一一次的公开线上课堂
    生活:父与子三亚行
    与北邮学子交流成长,敏捷个人总体介绍 PPT
    敏捷个人教你如何制作2012生活看板
    敏捷个人架构图 V1.3
    敏捷个人微刊封面及敏捷个人使命和加入社区方式
  • 原文地址:https://www.cnblogs.com/crazycode2/p/9389181.html
Copyright © 2011-2022 走看看