专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

@RequestBody接收Map隐藏陷阱揭秘,DTO才是最佳实践!

我们都知道@RequestBody后面可以接DTO也可以接map,但你不知道的是,接map有很多弊端,今天俺们就来聊聊这个问题。

例子:

@PostMapping("hello2")
public Map<String, Object> hello2(@RequestBody Map<String,Object> 
    Map<String, Object> result = new HashMap<>();
    result.putAll(param);
    return result;
}

返回结果:

&nbsp;

从返回结果可以看出,我们参数传什么就返回什么。

弊端1:无法转换类型

无法转换类型。

我们看看如果是DTO,结果会是怎么样

@PostMapping("hello3")
public Map<String, Object> hello3(@RequestBody Users param) {
    Map<String, Object> result = new HashMap<>();
    result.put("param",param);
    return result;
}

DTO:

@Data
public class Users {
    private Long userId;
    private String userName;
}

输出结果:

&nbsp;

可以看到由于userId是Long,虽然我们的入参是字符类型,但是Jackson会帮我们转为Long类型。

弊端2:可读性差

这个很明显,map无法看出入参是什么。可读性差

弊端3:构造复杂需要手动解析

如果入参很复杂,则在编写代码的阶段就需要手动解析出复杂的结构,十分地费劲。

解析时,可能写错字段名。

弊端4:无法校验

如果是map,需要手动校验参数,DTO就可以使用@NotNull等注解校验了。

未经允许不得转载:搜云库 » @RequestBody接收Map隐藏陷阱揭秘,DTO才是最佳实践!

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们