Spring @RequestBody Mapping 将所有属性映射到来自干净 camelCase POST Postman 请求的空值

Posted

技术标签:

【中文标题】Spring @RequestBody Mapping 将所有属性映射到来自干净 camelCase POST Postman 请求的空值【英文标题】:Spring @RequestBody Mapping maps all attributes to null values from clean camelCase POST Postman request 【发布时间】:2022-01-21 12:27:51 【问题描述】:

我有一个用 Spring 制作的后端。 在我的一个控制器中,我有一个 POST 请求,它从已实现的 DTO 接收数据。 我在 Lombok 中使用 @Data 注释,问题不是来自这里......因为我也尝试了它,但它也不起作用。 当我使用用 camelCase 格式化的干净 Json 从 Postman 发送 POST 请求时,我的控制器从我的 DTO 收到“空”数据......我不明白为什么。 你能提供建议或帮助吗? 谢谢

我的 DTO

import lombok.Data;

@Data
public class TransactionSendPaymentToSomeOneDto 

  private String connectionEmail;
  private String connectionFirstname;
  private String connectionLastname;
  private String connectionIban;
  private String descriptionTransaction;
  private Double amountSendMoneyValue;


我的控制器

@Slf4j
@RestController
@CrossOrigin("http://localhost:4200")
@RequestMapping("/transactions")
public class TransactionController 

  @Autowired
  private TransactionService transactionService;

  @PostMapping("/idUserSessionEnv/payment")
  public ResponseEntity<Transaction> sendPaymentToSomeone(@PathVariable("idUserSessionEnv") Long idUserSessionEnv, @RequestBody TransactionSendPaymentToSomeOneDto selectedSendMoneyValue)
    try
      log.info("RECEIVING DATA FROM FRONT-END: ID USER = "+idUserSessionEnv +" IBAN = " + selectedSendMoneyValue.getConnectionIban() + "  AMOUNT TRANSACTION = "+ selectedSendMoneyValue.getAmountSendMoneyValue());
      return ResponseEntity.ok(transactionService.sendPaymentToSomeone(idUserSessionEnv, selectedSendMoneyValue));
    catch (NoSuchElementException nse)
      return ResponseEntity.noContent().build();
    
  

【问题讨论】:

【参考方案1】:

您是否尝试在 @PostMapping("/idUserSessionEnv/payment") 下方添加 @ResponseBody

【讨论】:

使用@ResponseBody 也不起作用 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。【参考方案2】:

您发送了错误的有效载荷。

正确的有效载荷如下所示:


    "connectionEmail":"axel@axel.com",
    "connectionFirstname":"Axel",
    "connectionLastname":"Vega",
    "connectionIban":"2222",
    "amountSendMoneyValue":999,
    "descriptionTransaction":"Essai de transaction"

【讨论】:

谢谢,现在可以使用了...

以上是关于Spring @RequestBody Mapping 将所有属性映射到来自干净 camelCase POST Postman 请求的空值的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spring MockMVC 测试 Spring 的 @RequestBody

Spring中的@RequestBody和@ResponseBody注解

关于Spring @RequestBody 自动映射模型原理

Spring Boot - 验证@RequestBody

Ajax JQuery 到 Spring @RequestBody?我如何传递数据?

转-Spring 注解学习手札 补遗——@ResponseBody,@RequestBody,@PathVariable