前端项目开发,3个HTTP请求工具

这一小节,我们介绍一下前端项目开发中,HTTP请求会用到的3个工具,分别是fetchaxiosjs-tool-big-box中的jsonp请求。那么他们都有哪些小区别呢?我们一起来看一下。

目录

1 fetch

2 axios

3 js-tool-big-box 的 jsonp 请求

3.1 安装js-tool-big-box工具库

3.2 导入使用


1 fetch

  1. 浏览器内置,无需额外安装fetch是现代浏览器内置的API,不需要额外的库或依赖,对于一些简单的项目或者不希望增加打包体积的项目,fetch是一个轻量级的选择。

  2. 简单请求: 如果你的请求逻辑比较简单,不需要复杂的配置或处理,比如简单的GET请求和POST请求,fetch足够满足需求。

  3. 现代浏览器环境: 由于fetch是ES6+时代的API,支持Promise,所以在现代浏览器环境中使用fetch可以获得更简洁的代码。

fetch('https://api.example.com/data')
  .then(response => {
    if (!response.ok) {
      throw new Error('Network response was not ok ' + response.statusText);
    }
    return response.json();
  })
  .then(data => console.log(data))
  .catch(error => console.error('There has been a problem with your fetch operation:', error));

2 axios

  1. 复杂的请求需求axios提供了更多功能和配置选项,例如请求和响应拦截器、取消请求、自动转换JSON数据、处理并发请求等。如果你的项目中需要处理这些复杂的需求,axios是更好的选择。

  2. 兼容性需求axios支持更多的浏览器,包括一些旧版浏览器,如果你的项目需要兼容更多类型的浏览器,axios可能更合适。

  3. 更好的错误处理axios在处理HTTP错误状态码(如404,500等)时,比fetch更方便,因为fetch即使在返回404或500状态码时也不会被标记为reject,仍需要手动检查响应的状态码。

  4. 更好的请求配置和默认设置axios允许设置全局默认配置,可以在创建实例时配置baseURL、timeout等选项,简化多次请求时的配置工作。

import axios from 'axios';

axios.get('https://api.example.com/data')
  .then(response => console.log(response.data))
  .catch(error => console.error('There has been a problem with your axios operation:', error));

3 js-tool-big-box 的 jsonp 请求

说到jsonp请求,大家就会想到跨域,如果服务端没有做CROS的跨域设置,而是要通过JSONP跨域请求的方式,那么这个工具库会非常合适。

再下面的示例代码中,我们本站的IP是localhost,端口是8080,请求服务端目标IP为127.0.0.1,端口为3000,正是属于跨域场景.

3.1 安装js-tool-big-box工具库

npm i js-tool-big-box

3.2 导入使用

导入 ajaxBox 对象,因为jsonp方法的宿主是 ajaxBox ,导入后就可以使用了。

import { ajaxBox } from 'js-tool-big-box';

ajaxBox.sendJSONP('http://127.0.0.1:3000/users/bar', 'callback', function(data){
      console.log('获取到的JSONP请求数据', data);
});

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

企业网络的“瑞士军刀”:探索“一端多能”设备的多面性

在数字化时代,企业网络需求的复杂性和多样性不断增长,传统的单一功能网络设备已难以满足这些需求。企业需要一种集多种功能于一身的“一端多能”网络设备,以应对各种网络环境和业务需求,就像是一把多功能、灵活、可靠的瑞士军刀&a…

windows上安装miniforge和jupyterlab

1,下载miniforge3 GitHub - conda-forge/miniforge: A conda-forge distribution. 下载下来后傻瓜式安装就可以了 配置环境变量,在系统环境变量的path添加下列就行了,根据自己的路径修改 2,创建虚拟环境 conda create -n test …

红蓝对抗提权篇之一文看懂提权

一、计算机中的权限 1.1 不同的权限系统 权限在不同的应用中有着不同的分类,与安全相关的大致上我们分为: 匿名访问权限 来宾权限 用户权限 管理员权限 系统权限 不同的权限对应的权力各不相同,我们对自己电脑一般是用户权限和管理员权限。…

文件IO(二)

文件IO(二) 标准IO缓冲类型全缓冲行缓冲不缓冲 打开文件fopen 操作文件按字符读写(fgetc fputc)按行读写(fgets fputs)按块(对象)读写(fread fwrite)按格式化读写(fscanf…

【CALayer-时钟练习-旋转 Objective-C语言】

一、好,接下来呢,我们要让它旋转出来, 1.让它先旋转起来啊,这根秒针,让它先转着, 把之前的代码复制粘贴一份,改个名字,叫:07-时钟练习(旋转) 旋转的话,我现在应该让它,一秒钟,旋转一次,一秒钟,旋转一次, 那么,这个时候,我们应该怎么样去做, 我现在这个是…

ARM-V9 RME(Realm Management Extension)系统架构之系统能力的执行隔离

安全之安全(security)博客目录导读 目录 一、执行隔离 1、安全状态 2、安全模型 本博客探讨 RME 所需的系统能力,以保证 Arm CCA 对于 Realms 的安全性和隔离特性。 一、执行隔离 1、安全状态 RME 系统支持以下安全状态: 非安全 (Non-secure)安全…

nodejs版本管理切换工具nvm介绍、nvm下载、nvm安装、配置及nvm使用

最近很多同学问,在工作中,同时在进行2个或者多个不同的项目开发,每个项目的需求不同,进而不同项目必须依赖不同版本的NodeJS运行环境,这种情况下,对于维护多个版本的node将会是一件非常麻烦的事情&#xff…

使用screw-core生成数据库结构说明文档

官方项目地址: screw: 简洁好用的数据库表结构文档工具,支持MySQL/MariaDB/SqlServer/Oracle/PostgreSQL/TIDB/CacheDB 数据库。 数据库支持 MySQL MariaDB TIDB Oracle SqlServer PostgreSQL Cache DB(2016) H2 (开发…

倍福TwinCAT3 PLC编程软件下载安装

1、哪里下载TwinCAT3 链接: Search result | 倍福 中国https://www.beckhoff.com.cn/zh-cn/support/download-finder/search-result/?download_group=97028248下载倍福PLC编程软件需要注册,大家可以提前注册,注册好后就可以开始愉快的下载了 安装前需要注意将各杀毒软件卸…

Red Hat Enterprise Linux (RHEL) 8.10 发布 - 红帽企业 Linux 8 完美终结版

Red Hat Enterprise Linux (RHEL) 8.10 (x86_64, aarch64) - 红帽企业 Linux 红帽企业 Linux 8 完美终结版 请访问原文链接:Red Hat Enterprise Linux (RHEL) 8.10 (x86_64, aarch64) - 红帽企业 Linux,查看最新版。原创作品,转载请保留出处…

n后问题 回溯笔记

问题描述 在nn格的棋盘上放置彼此不受攻击的n个皇后。 按照国际象棋的规则,皇后可以攻击与之处在同 一行或同一列或同一斜线上的棋子。n后问题等价于在nn格的棋盘上放置n个皇后,任何2个皇后不放在同一行或同一列或同一斜线上。 代码 import java.uti…

橙派探险记:开箱香橙派 AIpro 与疲劳驾驶检测的奇幻之旅

目录 引子:神秘包裹的到来 第一章:香橙派AIpro初体验 资源与性能介绍 系统烧录 Linux 镜像(TF 卡) 调试模式 登录模式 第二章:大胆的项目构想 系统架构设计 香橙派 AIpro 在项目中的重要作用 第三章&#xf…

windows 安装 使用 nginx

windows 安装 使用 nginx nginx官网下载地址:https://nginx.org/en/download.html 下载稳定版本即可 下载压缩包解压到即可 进入文件夹中,打开命令行窗口,执行启动命令 start nginx.exe验证(默认是80端口)&#x…

new CCDIKSolver( OOI.kira, iks ); // 创建逆运动学求解器

demo案例 new CCDIKSolver(OOI.kira, iks); 在使用某个特定的库或框架来创建一个逆运动学(Inverse Kinematics, IK)求解器实例。逆运动学在机器人学、动画和计算机图形学等领域中非常重要,它用于根据期望的末端执行器(如机器人的…

【ai】livekit:Agents 1 : Agents Framework 与 LiveKit 核心 API 原语

agents 官方文档LiveKit Agents LiveKit Agents is an end-to-end framework for building realtime, multimodal AI “agents” that interact with end-users through voice, video, and data channels. This framework allows you to build an agent using Python.是一个端到…

SQL面试题练习 —— 连续支付订单合并

目录 1 题目2 建表语句3 题解 1 题目 现有一张用户支付表:t_user_pay 包含字段订单ID,用户ID,商户ID,支付时间,支付金额。 如果同一用户在同一商户存在多笔订单,且中间该用户没有其他商户的支付记录&#…

C语言 指针——指针变量做函数参数

目录 指针变量的解引用 为什么要用指针变量做函数参数? 演示Call by value 指针变量的解引用 为什么要用指针变量做函数参数? 演示Call by value

Tomcat启动过程

ClassLoader初始化 发生在org.apache.catalina.startup.Bootstrap#init() Catalina初始化 1、加载Digester工具 发生在org.apache.catalina.startup.Catalina#load() 2、容器启动,启用StandardContext维持Socket连接 Digester工具初始化 发生在org.apache.catali…

1比1万地形图符号库分享

我们在《1:2.5万、1:5万、1:10万军用地形图图式》一文中,为大家分享过军用地形图式。 还在《超实用三调符号库分享下载》一文中,为大家分享过三调符号库。 现在再为你分享一个1比1万的地形图符号库,请在文末查看符号…

浏览器修改后端返回值

模拟接口响应和网页内容 通过本地覆盖可以模拟接口返回值和响应头,无需 mock 数据工具,比如(Requestly),无需等待后端支持,快速复现在一些数据下的 BUG 等。在 DevTools 可以直接修改你想要的 Fetch/XHR 接…