《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

相关文章

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python使用pip工具实现包自动更新的多种方法

《Python使用pip工具实现包自动更新的多种方法》本文深入探讨了使用Python的pip工具实现包自动更新的各种方法和技术,我们将从基础概念开始,逐步介绍手动更新方法、自动化脚本编写、结合CI/C... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

sqlite3 命令行工具使用指南

《sqlite3命令行工具使用指南》本文系统介绍sqlite3CLI的启动、数据库操作、元数据查询、数据导入导出及输出格式化命令,涵盖文件管理、备份恢复、性能统计等实用功能,并说明命令分类、SQL语... 目录一、启动与退出二、数据库与文件操作三、元数据查询四、数据操作与导入导出五、查询输出格式化六、实用功

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

HTML中meta标签的常见使用案例(示例详解)

《HTML中meta标签的常见使用案例(示例详解)》HTMLmeta标签用于提供文档元数据,涵盖字符编码、SEO优化、社交媒体集成、移动设备适配、浏览器控制及安全隐私设置,优化页面显示与搜索引擎索引... 目录html中meta标签的常见使用案例一、基础功能二、搜索引擎优化(seo)三、社交媒体集成四、移动

HTML input 标签示例详解

《HTMLinput标签示例详解》input标签主要用于接收用户的输入,随type属性值的不同,变换其具体功能,本文通过实例图文并茂的形式给大家介绍HTMLinput标签,感兴趣的朋友一... 目录通用属性输入框单行文本输入框 text密码输入框 password数字输入框 number电子邮件输入编程框

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h