对接后端download接口报未知异常错误

你一定遇到过这种情况,在一个项目中下载功能明明好好的,下载接口调用方法与前端调用方法封装的好好的,可是换了一个接口,竟然搞罢工了,类似下面这样的,你会不会无从下手,不知道该怎么办呢?接下来我们就来说说这个问题。
在这里插入图片描述
一般接口报错主要有两个原因

  1. 后端接口问题
  2. 前端传参问题

首先要搞清楚是不是接口问题,可以在后端给出的接口文档调试页面进行调试,如果正常,那么大概率可以排除接口问题。比如像下面这样调用测试文档后返回了流数据,说明接口是正常的,那大概率是前端的问题了。
在这里插入图片描述
在前端开发中,调用API接口是常见的操作之一。正确地配置请求头(headers)和响应类型(responseType)对于确保请求的成功至关重要。下面详细解释这两个属性的设置及其作用。

Headers 设置

headers 是请求的一部分,它包含了客户端和服务端之间通信所需的信息,比如内容类型、认证信息等。在HTTP请求中,这些头部信息用于告诉服务器关于请求的一些元数据。

  • Content-Type: 这个头部字段用来描述请求体的格式。常见的值有:
    • application/json: 表示请求体是一个JSON对象。
    • application/x-www-form-urlencoded: 表示请求体是一个URL编码过的表单。
    • multipart/form-data: 通常用于上传文件时,因为文件数据不能简单地编码为字符串。

例如,Content-Type 被设置为 application/x-www-form-urlencoded,这意味着如果请求体中有数据的话,应该以URL编码的形式发送。

Response Type 设置

responseType 是一个选项,用于指定期望的响应类型。默认情况下,大多数库如axios会自动解析响应为JSON对象。但是,有时候我们需要直接处理原始的响应数据,这时就需要设置responseType了。

  • arraybuffer: 响应数据会被转换成ArrayBuffer。
  • blob: 响应数据将会是一个Blob对象,适用于处理文件或多媒体数据。
  • document: 当响应内容为HTML或XML文档时使用。
  • json: 自动解析为JSON对象。
  • text: 响应数据将被视为纯文本。

例如,responseType 被设置为 blob,这意味着服务端返回的数据将作为二进制数据处理,而不是尝试解析为JSON。这对于下载文件尤其有用,因为文件通常是以二进制形式传输的。

示例

假设我们使用axios库来发送一个GET请求,并且我们知道响应将是一个文件,我们可以这样设置:

import axios from 'axios';axios.get('/api/download', {headers: {'Content-Type': 'application/x-www-form-urlencoded',},responseType: 'blob'
})
.then(response => {// response.data 是一个 Blob 对象const blob = new Blob([response.data]);// 保存文件到本地saveAs(blob, 'example.pdf');
})
.catch(error => {console.error('Error downloading the file:', error);
});

在这个例子中,我们指定了请求头Content-Typeapplication/x-www-form-urlencoded,并且设置了responseTypeblob,以便正确处理文件下载。

总之,正确配置headersresponseType可以帮助你更好地控制请求和响应的处理方式,确保数据能够按照预期的方式进行交互。

注意,saveAs方法来自 file-saver库的一个方法,主要目的是接收一个Blob对象或ArrayBuffer,并将其保存为本地文件。这对于从Web应用中下载文件特别有用,例如从服务器获取的数据、生成的PDF文件、图像等。

那么报错了,如何解决呢,我的解决方法是将前端调用报错接口与后端调用正常的接口进行比较,看看headers配置是否一致,参数传递是否一致,请求方法是否一致
在这里插入图片描述

我这次报错是因为headersresponseType设置和后端接口不一致造成,修改一致后就OK了!

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

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

相关文章

MATLAB实现PID参数自动整定

目录 1、项目说明 2、文件说明 1、项目说明 本项目旨在通过 MATLAB 语言实现 PID 参数的自动整定,并设计了一个直观易用的 GUI 界面。该系统特别适用于实验室环境下的 PID 参数自整定任务。整定的核心原则在于优化系统性能,使系统的衰减比尽可能接近理…

深度学习从入门到精通——yolov3算法介绍

YOLO v3 论文地址:https://pjreddie.com/media/files/papers/YOLOv3.pdf论文:YOLOv3: An Incremental Improvement 先验框 (1013),(1630),(3323),(3061),(6245),(59 119), (116 9…

vue页面使用自定义字体

一、准备好字体文件 一般字体问价格式为 .tff,可以去包图网等等网站去下载,好看的太多了!!! 下载下来就是单个的 .tff文件,下载下来后可以进行重命名,但是不要改变他的后缀名,我把他…

小琳AI课堂:多模态模型的训练与应用

引言 大家好,这里是小琳AI课堂。今天我们将探讨一个热门且前沿的话题——多模态模型的训练与应用。让我们一起走进这个复杂而精致的艺术创作过程! 训练关键步骤 1. 数据收集与预处理 准备工作:从多种来源和模态收集数据,如文…

LLM的指令微调新发现:不掩蔽指令

最近看到了一篇挺有意思的论文,叫《指令掩蔽下的指令调整》(Instruction Tuning With Loss Over Instructions,https://arxiv.org/abs/2405.14394) 。 这篇论文里,研究者们对一个在指令微调中大家普遍接受的做法提出了疑问&#…

MMO:道具系统

本篇三部分: 道具分类 道具系统的接口设计(C/S) 道具系统的组成(各种小方法) 配置表,协议,数据库 //Array:打开宝箱获得多种道具 tables同目录下:Excel2Json.cmd生成…

【Python报错已解决】 SyntaxError: invalid syntax

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一:修复缺失的括号或引号2.…

Redis相关命令详解

目录 一、认识Redis 二、string 1、重要知识 2、基础命令 3、Key值的设置 三、list 1、重要知识 2、存储结构 3、基础命令 4、list的应用场景 四、hash 1、重要知识 2、基础命令 五、set 1、重要知识 2、基础命令 3、具体应用 六、zset 1、重要知识 2、…

【保姆级教程】如何创建一个vitepress项目?

文章目录 安装前的准备工作项目安装创建文件初始化文件安装依赖遇到了 missing peer deps 警告?命令行设置向导 完成 安装前的准备工作 Node.js 18 及以上版本。通过命令行界面 (CLI) 访问 VitePress 的终端。支持 Markdown 语法的编辑器。推荐 VSCode 及其官方 Vu…

gpt plus获取指南

随着AI技术的发展,越来越多的人开始依赖GPT来提高工作效率。市场上有多个平台提供GPT服务,如何选择最适合自己的?本文将详细对比两个热门平台:「银河」和「环球」,帮助你快速决策。 环球链接 银河链接 结论先行&#…

Windows10 如何配置python IDE

Windows10 如何配置python IDE 前言Python直接安装(快速上手)Step1.找到网址Step2.选择版本(非常重要)Step3. 安装过程Step4. python测试 Anaconda安装(推荐,集成了Spyder和Pycharm的安装)Step1…

【人工智能】枢纽:数据驱动洞察引领未来智能系统

目录 第一部分:人工智能概述 1.1 人工智能的定义 1.2 人工智能的历史发展 1.3 未来发展趋势 第二部分:机器学习 2.1 机器学习的概念 2.2 监督学习的算法与应用 2.2.1 线性回归(Linear Regression) 2.2.2 决策树&#xff…

Bonree ONE 3.0 助力企业加速驶入“全域可观测”新时代

发展新质生产力是我国目前推动高质量发展的内在要求和重要着力点。在这一背景下,基于信息技术及关键生产要素数据,推进企业数智化转型,成为形成新质生产力的关键路径。当前,随着企业业务的不断扩展和复杂化,企业对数据…

服务网关工作原理,如何获取用户真实IP?

文章目录 一、什么是网关二、网关工作原理 (★)三、SpringCloud Gateway3.1 Gateway 简介3.2 Gateway 环境搭建3.3 自定义路由规则 (★)3.4 局部过滤器3.5 全局过滤器(案例:获取用户真实IP地址) (★) 补充1:不同类型的客户端如何设…

[产品管理-3]:NPDP新产品开发 - 1 - 愿景、使命、价值观,看似很虚,实际上指明正确的方向; 战略、方案、方法,指明正确的方法。

目录 前言:用正确的方法做正确的事 做正确的事:(愿景、使命、价值观) 用正确的方法:(战略、方案、方法) 总结 一、什么是战略 1.1 概述 1.2 企业战略的分层 1.3 什么是组织,…

Nginx之日志切割,正反代理,HTTPS配置

1 nginx日志切割 1.1 日志配置 在./configure --prefixpath指定的path中切换进去,找到log文件夹,进去后找到都是对应的日志文件 其中的nginx.pid是当前nginx的进程号,当使用ps -ef | grep nginx获得就是这个nginx.pid的值 在nginx.conf中…

瑞芯微RK3566鸿蒙开发板OpenHarmony标准系统应用兼容性测试指导

本文OpenHarmony标准系统应用兼容性测试指导,适用鸿蒙系统软件开发测试的新手入门学习课程。设备为触觉智能的瑞芯微RK3566开发板,型号Purple Pi OH。是Laval官方社区主荐的一款鸿蒙开发主板。支持Openharmony、安卓Android、Linux的Debian、Ubuntu系统。…

【Flutter】Flutter安装和配置(mac)

1、准备工作 升级Macos系统为最新系统安装最新的Xcode电脑上面需要安装brew https://brew.sh/安装chrome浏览器(开发web用) 2.、下载flutter https://docs.flutter.dev/release/archive?tabmacos 大家网页后,选择对应的版本【Tips&#x…

【STM32 HAL库】IIC通信与CubeMX配置

【STM32 HAL库】IIC通信与CubeMX配置 前言理论IIC总线时序图IIC写数据IIC读数据 应用CubeMX配置应用示例AHT20初始化初始化函数读取说明读取函数 前言 本文为笔者学习 IIC 通信的总结,基于keysking的视频内容,如有错误,欢迎指正 理论 IIC总…

[网络]从零开始的计算机网络基础知识讲解

一、本次教程的目的 本次教程我只会带大叫了解网络的基础知识,了解网络请求的基本原理,为后面文章中可能会用到网络知识做铺垫。本次我们只会接触到网络相关的应用层,并不涉及协议的具体实现和数据转发的规则。也就是说,这篇教程是…