react 版权问题_react使用fetch封装请求的方法-简单易懂

方法有很多种,这里贴一个比较优雅又简单易懂的。用class类写法,new一个实例方法。

其中qs是包,类似于url拼接的方法,自行npm安装。我这里fetch使用的是dva的fetch,也可以自行使用自带的fetch  ,

把const fetch = require('dva').fetch; 注释既可。

/**

* 请求方法

*/

import qs from 'qs';

import { message } from 'antd';

const fetch = require('dva').fetch;

const { stringify, parse } = qs;

const checkStatus = res => {

if (200 >= res.status < 300) {

return res;

}

message.error(`网络请求失败,${res.status}`);

const error = new Error(res.statusText);

error.response = response;

throw error;

};

/**

* 捕获成功登录过期状态码等

* @param res

* @returns {*}

*/

const judgeOkState = async res => {

const cloneRes = await res.clone().json();

//TODO:可以在这里管控全局请求

if (cloneRes.code !== 200) {

message.error(`${cloneRes.msg}${cloneRes.code}`);

}

return res;

};

/**

* 捕获失败

* @param error

*/

const handleError = error => {

if (error instanceof TypeError) {

message.error(`网络请求失败啦!${error}`);

}

return { //防止页面崩溃,因为每个接口都有判断res.code以及data

code: -1,

data: false,

};

};

class http {

/**

*静态的fetch请求通用方法

* @param url

* @param options

* @returns {Promise}

*/

static async staticFetch(url = '', options = {}) {

const defaultOptions = {

/*允许携带cookies*/

credentials: 'include',

/*允许跨域**/

mode: 'cors',

headers: {

token: null,

Authorization: null,

// 当请求方法是POST,如果不指定content-type是其他类型的话,默认为如下↓,要求参数传递样式为 key1=value1&key2=value2,但实际场景以json为多

// 'content-type': 'application/x-www-form-urlencoded',

},

};

if (options.method === 'POST' || 'PUT') {

defaultOptions.headers['Content-Type'] = 'application/json; charset=utf-8';

}

const newOptions = { ...defaultOptions, ...options };

console.log('newOptions', newOptions);

return fetch(url, newOptions)

.then(checkStatus)

.then(judgeOkState)

.then(res => res.json())

.catch(handleError);

}

/**

*post请求方式

* @param url

* @returns {Promise}

*/

post(url, params = {}, option = {}) {

const options = Object.assign({ method: 'POST' }, option);

//一般我们常用场景用的是json,所以需要在headers加Content-Type类型

options.body = JSON.stringify(params);

//可以是上传键值对形式,也可以是文件,使用append创造键值对数据

if (options.type === 'FormData' && options.body !== 'undefined') {

let params = new FormData();

for (let key of Object.keys(options.body)) {

params.append(key, options.body[key]);

}

options.body = params;

}

return http.staticFetch(url, options); //类的静态方法只能通过类本身调用

}

/**

* put方法

* @param url

* @returns {Promise}

*/

put(url, params = {}, option = {}) {

const options = Object.assign({ method: 'PUT' }, option);

options.body = JSON.stringify(params);

return http.staticFetch(url, options); //类的静态方法只能通过类本身调用

}

/**

* get请求方式

* @param url

* @param option

*/

get(url, option = {}) {

const options = Object.assign({ method: 'GET' }, option);

return http.staticFetch(url, options);

}

}

const requestFun = new http(); //new生成实例

export const { post, get, put } = requestFun;

export default requestFun;

如何调用

import requestFun from '../utils/fetchUtil';

import qs from 'qs';

const { stringify } = qs;

const {post,get} = requestFun;

//get方式

export async function fetchData1(params) {

return get(`/api/bbb?${stringify(params)}`);

}

//post方式

export async function fetchData2(params) {

return post(`/api/aaa`,params);

}

有问题可以提出~~~,应该没多大问题

以上就是react使用fetch封装请求的方法-简单易懂的全部内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/306278.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

总结 Visual Studio 2019 发布以来 XAML 工具的改进

不知不觉&#xff0c;Visual Studio 2019 已经出到 16.8 和 16.9 Preview 了。虽然每次更新都林林总总地一大堆新功能和改进&#xff0c;但关于 XAML 的内容总是&#xff0c;always&#xff0c;每次都只有一点点。其实 Xamarin 相关的内容有在使劲地更新&#xff0c;不过和我做…

数据结构——最小生成树之prime算法(与最短路径之迪杰斯特拉算法很像)

最小生成树之prime算法 ***最小生成树:一个连通图的生成树中,所有边的权值加起来最小的生成树;称为最小生成树; 【简介】:Prime算法可在加权连通图里搜索最小生成树。即:所有边的权值之和为最小。 Prime算法是图论中求最小生成树的一种算法,与之类似的算法还有Kruskal算…

linux yum自动挂载_LINUX6安装YUM仓库和实现开机自动挂载

# LINUX6安装YUM仓库和实现开机自动挂载---------------------------------安装环境-------------------------------Redhat6镜像文件&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1DKH6adbrsipM-cTzH-wBgA 百度网盘 密码是hxcbVmware Workstation虚拟机工具&#x…

与您相约.NET Conf China 2020! 新进2位重磅嘉宾

2020年12月19日由.NET众多社区联合组织主办的2020年中国.NET开发者大会将于苏州盛大开幕&#xff0c;明天将发布大会的直播方案&#xff0c;敬请关注。时间&#xff1a;2020/12/19-12/20主题&#xff1a;开源、共享、创新地点&#xff1a;苏州人工智能产业园本次大会以“开源、…

数据结构——最短路径之Dijkstra算法(与最小生成树的prime算法很像,建议一起看)

最短路径之Dijkstra算法 (一)Dijkstra算法 单源最短路径:就是从某一个顶点出发,到图中任意顶点之间的最短路径; 【算法概述】:Dijkstra算法适用于解决单源最短路径的问题。即:从源点到任意指定顶点之间的最短距离的问题;但Dijkstra算法要求所有边的权值非负。看过Pri…

层与特征融合_【计算机系统应用】(第122期)感受野特征增强的 SSD 目标检测算法...

点击上方“蓝字”&#xff0c;关注我们吧&#xff01;目标检测是计算机视觉领域的一项重要任务, 是 生活中如实例分割[1] , 面部分析[2] , 汽车自动驾驶[3]、视 频分析[4] 等各种视觉应用的先决条件. 近些年, 伴随着深度卷积神经网络的充分发展[5] 以及良好的数据集注释先验工作…

Dapr微服务应用开发系列2:Hello World与SDK初接触

题记&#xff1a;上篇介绍了Dapr的环境配置&#xff0c;这次我们来动手尝试一下Dapr应用的开发Hello WorldDapr应用的Hello World其实和其他的Hello World一样简单&#xff1a;首先用你喜欢的语言和框架创建一个Hello World程序。比如在.NET 5下&#xff0c;就可以简单的这样实…

数据结构——最短路径算法之floyd算法

数据结构——最短路径算法之floyd算法 (一) Flody算法 【前言】:前面的Dijkstra算法用来解决单源最短路径的问题,即:从指定点到图上其他各点的最短路径。那么,如果我们要求图中任意两个结点之间的最短路径,如何用算法来实现呢?如果用Dijkstra来实现,就需要每次改变源…

详解python运行三种方式_详解python调用cmd命令三种方法

目前我使用到的python中执行cmd的方式有三种使用os.system("cmd")该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码,高位为脚本的退出状态码,即脚本中“exit 1”的代码执行后,os.system函数返回值的高位数则是1,如果低位数是0的情况…

一个基于.Net 5开发的轻量级Quartz配置中心 - QuartzCore.Blazor

项目简介QuartzCore.Blazor 是一个基于 .Net5 开发的轻量级 Quartz 作业配置中心&#xff0c;实践应用 Ant Design Blazor 和 FreeSql 两个技术&#xff0c; 对这两个技术感兴趣的小伙伴可以加我一起学习讨论哦&#xff0c;对有 Quartz 有需求的小伙伴亦可以开箱即用Code First…

如何开启jvm日志_做了10个小实验:搞懂了JVM三大参数类型

本实验的目的是讲解 JVM 的三大参数类型。在JVM调优中用到的最多的 XX 参数&#xff0c;而如何去查看和设置 JVM 的 XX 参数也是调优的基本功&#xff0c;本节以实验的方式讲解 JVM 参数的查看和设置。希望大家能有所启发。标配参数常见标配参数-version&#xff0c;获取JDK版本…

ASP VNext 开源服务容错处理库Polly

背景Polly是一个.NET弹性和瞬态故障处理库&#xff0c;允许开发人员以流畅和线程安全的方式表达诸如重试&#xff0c;断路器&#xff0c;超时&#xff0c;隔离头和回退之类的策略。Polly面向.NET Standard 1.1&#xff08;覆盖范围&#xff1a;.NET Core 1.0&#xff0c;Mono&a…

python中定制类_python定制类__str__(实例详解)

在接下来的文章中,让我们明白什么是python中的自定义类。学习什么是python的自定义类,python定制类可以扮演何种角色在python编程。当你看到像__xxx__ __slots__变量或函数名,你应该注意他们。这些在Python中有特殊用途。我们已经知道如何使用__slots__,我们也知道__len__()方法…

如何在 C# 中使用 Exceptionless

背景“Exceptionless”一词的定义是&#xff1a;无例外。Exceptionless可为您的JavaScript&#xff0c;Node&#xff0c;.NET Core&#xff0c;ASP.NET&#xff0c;Web API&#xff0c;WebForms&#xff0c;WPF&#xff0c;控制台和MVC应用程序提供实时错误报告。它将收集到的信…

xilinx7中管脚mrcc和srcc_Xilinx 7系列FPGA架构之SelectIO结构(一)

引言&#xff1a;从本文开始我们介绍Xilinx 7系列FPGA的SelectIO资源结构及使用&#xff0c;我们在进行FPGA外设硬件及软件设计时&#xff0c;如ADC、PHY、DDR3等&#xff0c;通常会涉及到该资源。本节我们介绍以下知识点&#xff1a;SelectIO资源概述及结构SelectIO管脚通用设…

IdentityServer4系列 | 混合模式

一、前言在上一篇关于授权码模式中&#xff0c; 已经介绍了关于授权码的基本内容&#xff0c;认识到这是一个拥有更为安全的机制,但这个仍然存在局限&#xff0c;虽然在文中我们说到通过后端的方式去获取token,这种由web服务器和授权服务器直接通信&#xff0c;不需要经过用户的…

3m格式的文件怎么转换成mp3_一招就能让PDF与其他格式文件相互转换,这样的大招你值得拥有...

大家都知道&#xff0c;现在不少的大佬比起用Word、Excel等等这些格式文件&#xff0c;它们更喜欢使用PDF文件。而我们不管是将Word、Excel等文件转换成PDF&#xff0c;还是将PDF转换成其他格式文件&#xff0c;都是一件麻烦事&#xff0c;更别说在手机上操作这一切了。别担心&…

如何使用 C# 中的 Tuple

开局一张图&#xff0c;首先声明的是 Tuple 不是什么新鲜概念&#xff0c;在编程语言 F#&#xff0c;Python 中早就有这个了&#xff0c;Tuple 是一种 有序的&#xff0c;有限不可变的&#xff0c;支持混杂类型的固定个数的 一种数据结构&#xff0c;有些朋友可能就想问了&…

中设置colorbar_【值得收藏】如何画出学术论文中需要的各种精美插图,看这一篇就够了!...

本文整理自知乎问答&#xff0c;仅用于学术分享&#xff0c;著作权归作者所有。如有侵权&#xff0c;请联系后台作删文处理。方法一作者&#xff5c;冯昱尧https://www.zhihu.com/question/21664179/answer/18928725强烈推荐 Python 的绘图模块 matplotlib: python plotting 。…

一文说通C#中的异步迭代器

今天来写写C#中的异步迭代器 - 机制、概念和一些好用的特性迭代器的概念迭代器的概念在C#中出现的比较早&#xff0c;很多人可能已经比较熟悉了。通常迭代器会用在一些特定的场景中。举个例子&#xff1a;有一个foreach循环&#xff1a;foreach (var item in Sources) {Console…