API请求报错 Required request body is missing问题解决

news2024/11/20 3:32:48

在这里插入图片描述

背景

在进行调用的时候,加载方法,提示以下错误

错误信息如下:

{
    "code": 10001,
    "msg": "Required request body is missing:  XXX",
    "data": null,
    "extra": null
}

Required request body is missing 错误通常表明服务器期望在 POST 请求的正文中接收到一些数据,但是实际上没有接收到。这可能是因为客户端没有发送正确的请求体,或者是因为服务器端的配置有问题。

所以根据前后端分别拆分校验定位。
在这里插入图片描述

解决过程

1、后端接口验证

使用PostMan直接调用接口。没有发现问题。数据可以正常返回。

PostMan是一个模拟接口调用的工具。具体可以自行百度。

2、前端验证

PostMan可以正常返回数据了。
所以,真相只有一个,那就是前端问题了。

2.1 传输参数定位

代码如下:

apiMethod(this.queryParams).then((response) => {
//业务代码
}

this.queryParams的定义如下:

// 查询参数
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        due: undefined,
        status: undefined,
        start: undefined,
        end: undefined,
      },

打印参数也OK。

2.2 参数格式问题

后端形参是一个对象,使用的@RequestBody的Post方式。所以应该也不会有问题。

如是,我想了下,是不是传递参数的过程中没有格式化json格式导致的问题。(死马当活马医,因为我用POstman去跑的时候,用的是JSOn格式)

于是我修改为apiMethod(JSON.stringify(this.queryParams))方式,调用的时候发现还是不OK。

如果参数没问题,那么就是传输的时候的问题了,我猜测问题应该是在远程调用的时候的问题。
于是找到JS的方法的api定义方法:

export function apiMethod(query) {
  return request({
    url: "XXXX",
    method: "post",
    query,
  });
}

2.3 传输定义

我把其中的query修改为data:query。然后重新调试,发现问题解决了。
代码如下:

export function apiMethod(query) {
  return request({
    url: "XXXX",
    method: "post",
    data: query,
  });
}

在这里插入图片描述

伪代码

后端Controller层:

@RestController  
@RequestMapping("/api")  
public class MyController {  
  
    @PostMapping("/someEndpoint")  
    public ResponseEntity<String> handlePostRequest(@RequestBody MyVO vo) {  
        // 处理 vo 对象  
        return ResponseEntity.ok("Received request with VO object");  
    }  
}

前端代码:

export function apiMethod(query) {
  return request({
    url: "XXXX",
    method: "post",
    data: query,
  });
}

在这里插入图片描述

分析总结

根据实际情况,一般定位这种问题参考以下几点来进行排除:

  • 客户端请求: 客户端必须发送一个包含请求体的 POST 请求。请求体应该是一个 JSON 字符串,其结构与 MyVO 类的字段相匹配。

  • Content-Type: 确保客户端在请求头中设置了正确的 Content-Type,通常为 application/json。

  • VO 类定义: VO 类应该与 JSON 数据中键的字段相对应,并且这些字段应该有正确的 getter 和 setter 方法。如果有任何不匹配,Spring MVC 将无法正确地将 JSON 数据绑定到 VO 对象。

  • Spring 配置: 确保 Spring 应用已经配置了用于处理 JSON 的消息转换器,例如 MappingJackson2HttpMessageConverter。这通常是通过在类路径上有 Jackson 相关的依赖项自动配置的。

  • 异常处理: 检查你的控制器是否有任何异常处理逻辑,它可能会捕获并处理这个错误,而不是将其返回客户端。

基本上使用上面几点来做排除法,问题都能进行解决。如果你已经检查了上述所有点,但问题仍然存在,那么需要查看更详细的日志信息,或者调试 Spring MVC 控制器以查看在何处丢失了请求体。

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

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

相关文章

【热门话题】探索与心得:深入体验Microsoft Edge浏览器

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 探索与心得&#xff1a;深入体验Microsoft Edge浏览器一、Edge浏览器概述1.1 发…

从零开始搭建网站(第二天)

今天把之前的htmlcssjs项目迁移过来&#xff0c;直接使用tspiniavue3vite组合&#xff0c;搭建过程可以看从零开始搭建性能完备的网站-思路过程&#xff08;1&#xff09;_自己架设一个芯参数网站-CSDN博客。之后安装一下volar扩展。迁移过来使用Vue重构时发现之前使用的左右两…

C++从入门到精通——内部类和匿名类

内部类和匿名类 前言一、内部类的概念示例 二、内部类的特性三、匿名类的概念示例 四、匿名类的特性总结 前言 内部类是定义在另一个类内部的类&#xff0c;它可以访问外部类的私有成员。匿名类是没有名字的类&#xff0c;通常用于一次性使用的简单对象创建&#xff0c;可以直…

ubuntu20.04安装+ros-noetic安装+内网穿透frp

刷机后的系统安装 ubuntu20.04安装安装ros-noetic安装各种必要的插件安装vscode内网穿透连接实验室主机配置frpc和frps文件运行完成自动化部署免密登录linux的免密登录windows上的免密登录 内网穿透的参考链接&#xff1a;如何优雅地访问远程主机&#xff1f;SSH与frp内网穿透配…

【刷题篇】回溯算法(五)

文章目录 1、N皇后2、有效的数独3、解数独4、单词搜索5、黄金矿工 1、N皇后 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你…

Android自带模拟器如何获得ROOT权限

如果在模拟器中不能切换到root权限&#xff0c;很可能是镜像使用的不对。 一.选择镜像标准&#xff1a; 1.运行在PC端选X86_64镜像&#xff0c;才能流畅运行 2.不带google api的镜像 二.步骤 在虚拟机管理器中新建AVD&#xff0c;并下载符合要求的镜像文件 三.验证

【多线程学习】深入探究阻塞队列与生产者消费者模型和线程池常见面试题

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

中医药性笔记

目录 当归黄芪党参白术甘草茯苓半夏陈皮 当归 补血。 当归&#xff0c;腾讯医典 黄芪 土金之药。 补中气的同时补肺气。益卫固表、利水消肿、 腾讯医典黄芪 党参 土金之药。健脾益肺&#xff0c;生津养血。 党参补气之力弱于人参、用于脾肺气虚的轻症。 党参、腾讯…

全网最新的迅雷网盘拉新流程一览,碎片时间就能做的副业

有没有想做副业&#xff0c;又担心休息时间不够的朋友&#xff1f;有没有既想增加收入又不希望工作太累的朋友&#xff1f;如果你也有以上顾虑&#xff0c;不用担心&#xff0c;这个近几年的热门副业——迅雷网盘拉新项目就非常适合你&#xff01;网盘拉新是平台为了扩大用户群…

【python】一文搞懂序列、列表、元组、集合、字典区别及其应用

【python】一文搞懂序列、列表、元组、集合、字典区别及其应用 【先赞后看养成习惯】求点赞+关注+收藏😀 序列介绍 1、定义:序列(sequence)是一种可迭代的、元素有序的容器类型的数据。 2、序列包括列表(list)、字符串(str)、元组(tuple)和字节序列(bytes)等。 …

Liunx挂载硬件设备

一、mount命令&#xff08;用于挂载文件系统&#xff09; &#xff08;一&#xff09;语法格式&#xff1a;mount 参数 源设备路径 目的路径 &#xff08;二&#xff09;参数 1、-t&#xff1a;指定挂载的文件系统 &#xff08;1&#xff09;iso9660&#xff1a;光盘或光盘…

[vapkg]解决vcpkg下载缓慢的问题

在我们执行vcpkg install some_project之后&#xff0c;我们经常会遇见界面停留在Downloading某个依赖上面&#xff0c;这时我们可以直接把那个下载链接复制下来&#xff0c;然后在外面用浏览器或别的下载工具自己下载&#xff0c;接着&#xff0c;去\vcpkg\downloads\temp这个…

iOS开发 刻度盘 仪表盘,圆点按钮滑动控制,渐变色

最近项目需要&#xff0c;想做一个渐变色的刻度盘&#xff0c;圆形按钮滑动控制&#xff0c;所以 用oc写了一下&#xff0c;代码没附上&#xff0c;想看代码可以私信联系&#xff0c;效果如下图。 部分代码 self.drawCenter CGPointMake(self.frame.size.width / 2.0, self.f…

[大模型]TransNormerLLM-7B 接入 LangChain 搭建知识库助手

TransNormerLLM-7B 接入 LangChain 搭建知识库助手 环境准备 在 autodl 平台中租赁一个 3090/4090 等 24G 显存的显卡机器&#xff0c;如下图所示镜像选择 PyTorch–>2.0.0–>3.8(ubuntu20.04)–>11.8 接下来打开刚刚租用服务器的 JupyterLab&#xff0c;并且打开其…

Spark Standalone模式部署

准备至少2台虚拟机&#xff0c;装好linux系统&#xff0c;我装的是Ubuntu20.04。 1.修改主机名&#xff08;每台&#xff09; 1&#xff09;修改/etc/hostsname内容&#xff0c;主节点改为master&#xff0c;子节点改为slaver1 sudo vim /etc/hostname 2&#xff09;在/etc/…

rabbitmq 使用SAC队列实现顺序消息

rabbitmq 使用SAC队列实现顺序消息 前提 SAC: single active consumer, 是指如果有多个实例&#xff0c;只允许其中一个实例消费&#xff0c;其他实例为空闲 目的 实现消息顺序消费&#xff0c;操作&#xff1a; 创建4个SAC队列,消息的路由key 取队列个数模&#xff0c;这…

Marin说PCB之Via 的 Z--AXIS--delay知多少?

周末宅在家刷抖音的时候&#xff0c;看刷到了一条很有趣味的视频&#xff0c;主要讲的是让你如何从一个allegro菜鸟一个月变成大神的&#xff0c;一个月包教会&#xff0c;这不是妥妥地大骗子嘛。现在的整个市场行情不好啊&#xff0c;各大汽车新能源门派都在紧锣密鼓地搞着“裁…

AI预测福彩3D第40弹【2024年4月19日预测--第8套算法开始计算第8次测试】

今天咱们继续测试第8套算法和模型&#xff0c;今天是第8次测试&#xff0c;目前的测试只是为了记录和验证&#xff0c;为后续的模型修改和参数调整做铺垫&#xff0c;所以暂时不建议大家盲目跟买~废话不多说了&#xff0c;直接上结果&#xff01; 2024年4月19日3D的七码预测结果…

最小生成树算法的实现c++

最小生成树算法的实现c 题目链接&#xff1a;1584. 连接所有点的最小费用 - 力扣&#xff08;LeetCode&#xff09; 主要思路&#xff1a;使用krusal算法&#xff0c;将边的权值进行排序&#xff08;从小到大排序&#xff09;&#xff0c;每次将权值最小且未加入到连通分量中…

施耐德 PLC 及模块 ModbusTCP 通信配置方法

1. 通过【I/O扫描器】服务进行读写 相关文档&#xff1a;各模块说明书仅 NOE 网卡模块、部分 CPU 自带的网口支持 优点&#xff1a;不需要额外编程&#xff0c;系统自动周期型读写数据缺点&#xff1a;扫描周期不定&#xff0c;程序无法控制数据刷新的时序 2. 通过内部程序…