ReactNative 封装fetch网络请求

2024-06-03 05:58

本文主要是介绍ReactNative 封装fetch网络请求,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

封装的fetch方法类

/*** Created by 卓原 on 2017/11/14.* zhuoyuan93@gmail.com*//*** 注意这个方法前面有async关键字* @param url  请求地址* @param body 请求参数* @param method 请求方法 大写* @param successCallBack  网络请求成功的回调* @param errorCallBack    出错的回调* @returns {Promise.<*>}*/
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) {if (body) {let str = toQueryString(body);if (str && str.length > 0) url += '?' + str;}console.log(url);try {// 注意这里的await语句,其所在的函数必须有async关键字声明let response = await fetch(url);console.log('getUrl:' + 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) {/*** 请求头* @type {{Accept: string, "Content-Type": string, uk: string}}*/const headers = {'Accept': 'application/json','Content-Type': 'application/json',};try {// 注意这里的await语句,其所在的函数必须有async关键字声明let response = await fetch(url, {method: 'POST',headers,body: JSON.stringify(body)});console.log(`postUrl:${url},headers:${headers},body:${JSON.stringify(body)}`);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;
}export default {requestUrl,get,post,
};

Tips:
post请求时候,header我写在了post方法体内,可以针对自己需求改动headers内容。
当然你也可以定在在外层,但是想动态修改headers不方便。

使用方法:
(1)

import Fetch from '../utils/FetchUtil';

(2)

Fetch.get(url, '',result => {console.log(result)}, error => {console.log(error)});

第二种, 将fetch封装成类

/*** Created by 卓原 on 2018/3/1.* zhuoyuan93@gmail.com*/export default class HttpUtil {static get(url) {return new Promise((resolve, reject) => {fetch(url).then(response => response.json()).then(result => {resolve(result);}).catch(error => {reject(error);})})}static post(url, data) {return new Promise((resolve, reject) => {fetch(url, {method: 'POST',header: {'Accept': 'application/json','Content-Type': 'application/json',},body: JSON.stringify(data)}).then(response => response.json()).then(result => {resolve(result)}).catch(error => reject(error))})}}

调用:

import HttpUtil from '../util/HttpUtil';load(url) {HttpUtil.get(url).then(result => {this.setState({data: result});console.log(this.state.data)}).catch(error => {this.setState({data: error})})}

这篇关于ReactNative 封装fetch网络请求的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解

Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)

《Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)》:本文主要介绍Java导入、导出excel的相关资料,讲解了使用Java和ApachePOI库将数据导出为Excel文件,包括... 目录前言一、引入Apache POI依赖二、用法&步骤2.1 创建Excel的元素2.3 样式和字体2.

Go语言中最便捷的http请求包resty的使用详解

《Go语言中最便捷的http请求包resty的使用详解》go语言虽然自身就有net/http包,但是说实话用起来没那么好用,resty包是go语言中一个非常受欢迎的http请求处理包,下面我们一起来学... 目录安装一、一个简单的get二、带查询参数三、设置请求头、body四、设置表单数据五、处理响应六、超

JAVA封装多线程实现的方式及原理

《JAVA封装多线程实现的方式及原理》:本文主要介绍Java中封装多线程的原理和常见方式,通过封装可以简化多线程的使用,提高安全性,并增强代码的可维护性和可扩展性,需要的朋友可以参考下... 目录前言一、封装的目标二、常见的封装方式及原理总结前言在 Java 中,封装多线程的原理主要围绕着将多线程相关的操

Qt实现发送HTTP请求的示例详解

《Qt实现发送HTTP请求的示例详解》这篇文章主要为大家详细介绍了如何通过Qt实现发送HTTP请求,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、添加network模块2、包含改头文件3、创建网络访问管理器4、创建接口5、创建网络请求对象6、创建一个回复对