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;
    }

    .

  • 相关阅读:
    试题 历届试题 国王的烦恼
    试题 历届试题 九宫重排
    试题 历届试题 网络寻路
    试题 历届试题 危险系数
    试题 历届试题 横向打印二叉树
    试题 历届试题 幸运数
    试题 历届试题 大臣的旅费
    试题 历届试题 连号区间数
    Linux多进行之fork
    linux C语言getopt()函数的使用
  • 原文地址:https://www.cnblogs.com/crazycode2/p/9389181.html
Copyright © 2011-2022 走看看