后端返回422处理过程

news/2024/10/23 12:34:28/

一、简介

 背景:后端要求我传输一个值给他,但是我传给他之后首先报422状态码,我在这里分享顺便记录一下自己这次的处理过程

二、解决过程及问题出现

 当时后端要求我传几个值给他,按照我以前的习惯我习惯用json传值给他,结果后端还是给我返回422

1.首先我就去搜了一下422状态码是什么意思,我感觉说的太官方,我理解的意思就是服务器无法理解你传的值,在通俗点就是传值的格式或者类型有误。我马上就去检查了我传输的值得类型是否和后端需要的类型一样,有没有缺少什么字段又或者字段名错了(字段名错误当时我认为不太可能因为我是复制过去的~~)

 我传的代码

2.我就去检查我的请求头token有没有封装上(因为我自己二次封装了一个axios),因为在后端需要传的字段里面是有token这个字段(浏览器和控制台都有)

3. 我就又去看了一下接口文档(因为这次后端给我的接口文档叫fastAPI),所以我去查了一下fastAPI里面后端给我写了两种状态码情况,一直是成功的(200,不用说了),一种是失败的(422,返回的图在下面),错误大概意思就是说我缺失了什么必需的元素,后面我发现后端要求我传formData回去,我传的是json,肯定是会报错的,然后我又传formdata回去,至于formdata如何传值可以去网上自己搜索,一大堆。

 4.当我用formdata传值回去的时候,后端还是给我返回422,我当时去检查了一下formdata传值参数和写法有没有问题,我发现formdata传值回去我的请求头没有变化,formdata传值的话,那么请求头应该是Content-Type = 'multipart/form-data;'(如果是json的话请求头应该是这样的Content-Type= 'application/json;charset=utf-8',当然默认的都是json的)我又去我requst里面出现封装了一个专门基于formdata请求头新的axios封装,结果呢不生效,就是说axios二次封装没有把他封装上去还是以前的请求头,然后我就怀疑是二次封装的原因(具体原因我也不太清楚),我就打算用原生的axios ,结果呢我都不用封装请求头,只要你是formdata,axios会自动帮你拼接好请求头

 5.请求头和传值都是按照formdata的形式传回去了,但是还是要报422,我就去network里面看看 我传回去的值有没有什么变化(因为现在用formdata传值与我以往传值不同了),在network里面我有一个字段后端是需要叫我将文件名是数组的形式传回去,结果我传回去的值是[object object],我当时认为的就是因为formdata它是以添加对象key和value的形式传回去的值,而我在传文件名的时候是直接将数组扔给后端的,肯定会出现上面那种情况,解决办法就是

 6.我已经检查了我前端应该传的所有字段类型和名字加格式都没有错误结果还是报422,我实在没有办法了只能找后端看看他后台有没有什么问题

三、总结

我写这篇文章的目的就是为了记录我这次遇到的问题方便下次长记性同时如果大家遇到了也可以参考一下我这篇文章,我技术很菜,这真的只是我第一遇见422状态码,不足的地方希望大家多多见谅,谢谢。。。。。。。。我最后的解决方法是使用原生axios,不使用任何封装axios,并且请求头都是自己去手写,最后使用formdata传值回去(注意,在写请求头Content-Type的时候 一定不用自己去写Content-Type = 'multipart/form-data;因为浏览器会识别传值的时候如果是form data传值他会自己给你修改Content-Type的值,而请求头你自己需要手写的是自己写token)

 


http://www.ppmy.cn/news/541701.html

相关文章

422接收数据00_串口通信232/485/422 详细解析

1. 什么是串口通信? 常见的串口通信一般是指异步串行通信。这里就要说一下同步和异步的区别了。 (1)先讲一下串行通信的概念。那么,与串行通信相对的是什么呢? 与串行通信相对的是并行通信。并行数据传输一般都是以字节传输的&am…

串口通信协议--UART、RS-232、RS-485、RS-422

近期学习了单片机及数电相关知识,故决定系统地学习一些通信协议。手边书本仅介绍了串口低速接口的相关协议。 串行通信 是指通过使用一条数据线(需要地线或控制线),将数据一位一位地一次传输,每一位数据占据一个固定的…

数据库管理-第八十四期 X10M来了(20230624)

数据库管理 2023-06-24 第八十四期 X10M来了1 Intel -> AMD2 PMEM -> XRMEM3 DDR4 -> DDR54 Flash cards总结 第八十四期 X10M来了 在第四十三期的时候,我曾经憧憬过Exadata X10M的到来,Oracle于6月22日正式公布Exadata X10M系列。其实5月已经…

Stable-Diffusion-webui mac m1安装

Stable-Diffusion-webui mac m1安装 推荐下载器:neat download manager 安装git python 3.10 下载地址:https://github.com/AUTOMATIC1111/stable-diffusion-webui 我这边是通过pycharm 通过git直接拉取到本地的,下载的,最好先建…

C语言:使用指针使字符串逆序

题目: 链接:字符逆序__牛客网 来源:牛客网 将一个字符串str的内容颠倒过来,并输出。 输入描述: 输入一个字符串,可以有空格 输出描述: 输出逆序的字符串 示例1 输入 I am a student 输出 tneduts a ma I …

内存空间3种扩容方式(含虚拟内存)

内存空间扩容 思考:GTA游戏60GB,讲道理运行前应该把60GB数据放入内存,然而我的电脑只有4GB,但是为什么游戏可以正常运行? 1.覆盖技术(单个进程) 覆盖技术的思想:将程序分为多个段&am…

虚拟内存技术的实现

虚拟内存技术的实现需要建立在离散分配的内存管理方式的基础上。虚拟内存的实现有以下三种方式: 1. 请求分页存储管理:建立在分页管理之上,为了支持虚拟存储器功能而增加了请求调页功能和页面置换功能。请求分页是目前最常用的一种实现虚拟存…

2020-09-05:虚拟内存知道么?什么时候使用虚拟内存?虚拟内存除了扩大内存还有什么用?

福哥答案2020-09-05: 答案来自此链接 我们平时使用的电脑中有一个虚拟内存,但是大家对虚拟内存的了解不是很多,今天小编就大家说一说这个虚拟内存,让大家明白什么是虚拟内存,虚拟内存有什么用,以及虚拟内…