《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

相关文章

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

Python用Flask封装API及调用详解

《Python用Flask封装API及调用详解》本文介绍Flask的优势(轻量、灵活、易扩展),对比GET/POST表单/JSON请求方式,涵盖错误处理、开发建议及生产环境部署注意事项... 目录一、Flask的优势一、基础设置二、GET请求方式服务端代码客户端调用三、POST表单方式服务端代码客户端调用四

MySQL慢查询工具的使用小结

《MySQL慢查询工具的使用小结》使用MySQL的慢查询工具可以帮助开发者识别和优化性能不佳的SQL查询,本文就来介绍一下MySQL的慢查询工具,具有一定的参考价值,感兴趣的可以了解一下... 目录一、启用慢查询日志1.1 编辑mysql配置文件1.2 重启MySQL服务二、配置动态参数(可选)三、分析慢查

基于Python实现进阶版PDF合并/拆分工具

《基于Python实现进阶版PDF合并/拆分工具》在数字化时代,PDF文件已成为日常工作和学习中不可或缺的一部分,本文将详细介绍一款简单易用的PDF工具,帮助用户轻松完成PDF文件的合并与拆分操作... 目录工具概述环境准备界面说明合并PDF文件拆分PDF文件高级技巧常见问题完整源代码总结在数字化时代,PD

基于Python Playwright进行前端性能测试的脚本实现

《基于PythonPlaywright进行前端性能测试的脚本实现》在当今Web应用开发中,性能优化是提升用户体验的关键因素之一,本文将介绍如何使用Playwright构建一个自动化性能测试工具,希望... 目录引言工具概述整体架构核心实现解析1. 浏览器初始化2. 性能数据收集3. 资源分析4. 关键性能指

Python按照24个实用大方向精选的上千种工具库汇总整理

《Python按照24个实用大方向精选的上千种工具库汇总整理》本文整理了Python生态中近千个库,涵盖数据处理、图像处理、网络开发、Web框架、人工智能、科学计算、GUI工具、测试框架、环境管理等多... 目录1、数据处理文本处理特殊文本处理html/XML 解析文件处理配置文件处理文档相关日志管理日期和