《React-Native系列》32、 基于Fetch封装HTTPUtil工具类

本文主要是介绍《React-Native系列》32、 基于Fetch封装HTTPUtil工具类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关于http请求的工具类,有很多,譬如:httpclient,okhttp。

那么关于RN的处理HTTP请求的工具类呢,目前还没有找到,所以自己简单封装了一个,避免代码里到处都是fetch方法。

好了,完整代码如下:

[javascript]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. var HTTPUtil = {};  
  2.   
  3. /** 
  4.  * 基于 fetch 封装的 GET请求 
  5.  * @param url 
  6.  * @param params {} 
  7.  * @param headers 
  8.  * @returns {Promise} 
  9.  */  
  10. HTTPUtil.get = function(url, params, headers) {  
  11.     if (params) {  
  12.         let paramsArray = [];  
  13.         //encodeURIComponent  
  14.         Object.keys(params).forEach(key => paramsArray.push(key + '=' + params[key]))  
  15.         if (url.search(/\?/) === -1) {  
  16.             url += '?' + paramsArray.join('&')  
  17.         } else {  
  18.             url += '&' + paramsArray.join('&')  
  19.         }  
  20.     }  
  21.     return new Promise(function (resolve, reject) {  
  22.       fetch(url, {  
  23.             method: 'GET',  
  24.             headers: headers,  
  25.           })  
  26.           .then((response) => {  
  27.               if (response.ok) {  
  28.                   return response.json();  
  29.               } else {  
  30.                   reject({status:response.status})  
  31.               }  
  32.           })  
  33.           .then((response) => {  
  34.               resolve(response);  
  35.           })  
  36.           .catch((err)=> {  
  37.             reject({status:-1});  
  38.           })  
  39.     })  
  40. }  
  41.   
  42.   
  43. /** 
  44.  * 基于 fetch 封装的 POST请求  FormData 表单数据 
  45.  * @param url 
  46.  * @param formData   
  47.  * @param headers 
  48.  * @returns {Promise} 
  49.  */  
  50. HTTPUtil.post = function(url, formData, headers) {  
  51.     return new Promise(function (resolve, reject) {  
  52.       fetch(url, {  
  53.             method: 'POST',  
  54.             headers: headers,  
  55.             body:formData,  
  56.           })  
  57.           .then((response) => {  
  58.               if (response.ok) {  
  59.                   return response.json();  
  60.               } else {  
  61.                   reject({status:response.status})  
  62.               }  
  63.           })  
  64.           .then((response) => {  
  65.               resolve(response);  
  66.           })  
  67.           .catch((err)=> {  
  68.             reject({status:-1});  
  69.           })  
  70.     })  
  71. }  
  72.   
  73. export default HTTPUtil;  

怎么使用呢,举个简单的例子吧:

[javascript]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. let formData = new FormData();  
  2. formData.append("id",1060);  
  3.         
  4. HTTPUtil.post(url,formData,headers).then((json) => {  
  5.     //处理 请求success  
  6.     if(json.code === 0 ){  
  7.             //我们假设业务定义code为0时,数据正常  
  8.         }else{  
  9.              //处理自定义异常  
  10.             this.doException(json);  
  11.         }  
  12.    },(json)=>{  
  13.      //TODO 处理请求fail  
  14.         
  15. })  

这篇关于《React-Native系列》32、 基于Fetch封装HTTPUtil工具类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/510330

相关文章

Vue3使用router,params传参为空问题

《Vue3使用router,params传参为空问题》:本文主要介绍Vue3使用router,params传参为空问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录vue3使用China编程router,params传参为空1.使用query方式传参2.使用 Histo

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建

一文详解JavaScript中的fetch方法

《一文详解JavaScript中的fetch方法》fetch函数是一个用于在JavaScript中执行HTTP请求的现代API,它提供了一种更简洁、更强大的方式来处理网络请求,:本文主要介绍Jav... 目录前言什么是 fetch 方法基本语法简单的 GET 请求示例代码解释发送 POST 请求示例代码解释

CSS Padding 和 Margin 区别全解析

《CSSPadding和Margin区别全解析》CSS中的padding和margin是两个非常基础且重要的属性,它们用于控制元素周围的空白区域,本文将详细介绍padding和... 目录css Padding 和 Margin 全解析1. Padding: 内边距2. Margin: 外边距3. Padd

CSS will-change 属性示例详解

《CSSwill-change属性示例详解》will-change是一个CSS属性,用于告诉浏览器某个元素在未来可能会发生哪些变化,本文给大家介绍CSSwill-change属性详解,感... will-change 是一个 css 属性,用于告诉浏览器某个元素在未来可能会发生哪些变化。这可以帮助浏览器优化

CSS去除a标签的下划线的几种方法

《CSS去除a标签的下划线的几种方法》本文给大家分享在CSS中,去除a标签(超链接)的下划线的几种方法,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧... 在 css 中,去除a标签(超链接)的下划线主要有以下几种方法:使用text-decoration属性通用选择器设置:使用a标签选择器,将tex

前端高级CSS用法示例详解

《前端高级CSS用法示例详解》在前端开发中,CSS(层叠样式表)不仅是用来控制网页的外观和布局,更是实现复杂交互和动态效果的关键技术之一,随着前端技术的不断发展,CSS的用法也日益丰富和高级,本文将深... 前端高级css用法在前端开发中,CSS(层叠样式表)不仅是用来控制网页的外观和布局,更是实现复杂交

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

在React中引入Tailwind CSS的完整指南

《在React中引入TailwindCSS的完整指南》在现代前端开发中,使用UI库可以显著提高开发效率,TailwindCSS是一个功能类优先的CSS框架,本文将详细介绍如何在Reac... 目录前言一、Tailwind css 简介二、创建 React 项目使用 Create React App 创建项目

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方