加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

react-native fetch 请求封装

发布时间:2020-12-15 20:26:18 所属栏目:百科 来源:网络整理
导读:1.fetch 函数封装 fetch.js /** * 请求头 * @type {{Accept: string,Content-Type: string}} */const header = { ‘Accept‘: ‘application/json‘,‘Content-Type‘: ‘application/json‘,}; /** * 注意这个方法前面有async关键字 * @param url 请求地址

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,successCallBack,errorCallBack);
  }
  else {
    post(url,errorCallBack);
  }
}
 
/**
 * get请求
 */
async function get(url,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,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;
}

.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读