You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot中Postman POST请求失败:RequestBody缺失问题排查

问题排查与解决方案

核心问题

你遇到的错误根源在于HTTP POST请求只能包含一个请求体(RequestBody),但你的Controller方法sendMoney声明了三个@RequestBody参数。Spring无法从单个请求体中解析出三个独立的参数,因此会抛出请求体缺失的错误。而CommandLineRunner是直接调用Java方法,不受HTTP协议限制,所以能正常执行。

解决方案步骤

1. 创建请求DTO类

封装所有请求参数到一个单独的DTO(数据传输对象)中,比如命名为SendMoneyRequest:

import lombok.Data;

@Data // 用Lombok自动生成getter、setter、toString等方法,也可手动实现
public class SendMoneyRequest {
    private User sender;
    private User receiver;
    private double amount;
}

2. 修改Controller层方法

将原来的三个@RequestBody参数替换为这个DTO作为唯一的请求体参数:

@PostMapping("/send")
public ApiResponse<Transaction> sendMoney(@RequestBody SendMoneyRequest request) {
    return transactionService.sendMoney(request.getSender(), request.getReceiver(), request.getAmount());
}

3. 调整Postman请求体格式

在Postman中发送JSON格式的请求体,结构对应SendMoneyRequest:

{
    "sender": {
        "firstName": "Olamide",
        "lastName": "Thompson",
        "email": "olamide@mail.com"
    },
    "receiver": {
        "firstName": "Francis",
        "lastName": "Oladosu",
        "email": "francisola@gmail.com"
    },
    "amount": 200
}

验证逻辑

修改完成后,重新启动项目,用Postman发送上述格式的POST请求,即可正常调用接口并完成交易存储。

内容的提问来源于stack exchange,提问作者shiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 16:59:55