Spring Rest Controller @PostMapping parameter best practice ?

2021-01-18 22:22:35 +08:00
 AkideLiu

一般 postmapping 接收 json 数据的时候用什么格式比较好呢? DTO object 还是 map ?

以下两个例子对比一下你觉得哪个好呢?

  1. Map:

    @PostMapping("")
    public ResponseEntity<Transaction> addTransaction(HttpServletRequest request,
                                                      @PathVariable("categoryId") Integer categoryId,
                                                      @RequestBody Map<String, Object> transactionMap) {

                                                                  

https://github.com/pairlearning/expense-tracker-api/blob/5cb647f06797f2da554e04d89943b1bfb4fe1e00/src/main/java/com/pairlearning/expensetracker/resources/TransactionResource.java#L39-L42

  1. DTO object:


    @PostMapping(path = "/", consumes = "application/json", produces = "application/json")
    public ApiResultBean createOrUpdatePeople(@Valid @RequestBody PostPeopleDTO postPeopleDTO) throws JsonProcessingException {
    
    

1748 次点击
所在节点    程序员
12 条回复
Citrus
2021-01-18 22:27:59 +08:00
用对象。结合 swagger 之类的自动生成接口文档。
在这里用 Map 后患无穷。
chendy
2021-01-18 22:28:54 +08:00
啊这,标题说 PostMapping,内容问 RequestBody,难道是个不成熟的发帖机器人???
除非特殊情况需要 Map/JsonNode 之类的接,否则全部对象接
AkideLiu
2021-01-18 22:37:48 +08:00
@Citrus
@chendy

谢谢两位!
boris93
2021-01-18 22:45:10 +08:00
用对象
谁他妈用 Map 传参看你爹我不抄起铜头皮带给你丫抽成大陀螺
bxb100
2021-01-19 00:44:05 +08:00
@boris93 #4 你的痛我懂
cslive
2021-01-19 08:35:58 +08:00
传参,返回都全部用 map,开发效率高的一批 🐶
uselessVisitor
2021-01-19 08:50:36 +08:00
@boris93 哈哈哈哈哈哈,暴躁老哥
90d0n
2021-01-19 09:36:07 +08:00
同意 #4

接手过一个项目, 全是 map 接参, 我 tm ******
AkideLiu
2021-01-19 11:54:19 +08:00
@boris93
机器:我看懂了
人:我看不懂
fkdtz
2021-01-19 11:56:01 +08:00
Map 传参的可能是弱类型语言转过来的,没错说的就是我
FstarKing
2021-01-19 14:10:48 +08:00
我们小公司,用什么都没人管,不过看了前面几位老哥的留言,我决定以后用对象了
boris93
2021-01-19 16:19:40 +08:00
@bxb100 @cslive @beichenhpy @90d0n 看来都是被坑过的啊,Map 一时爽,事后火葬场

@FstarKing #11 用 Map 的话,别说挨骂了,就是你自己在一个星期之后,都不一定知道自己传了啥过去

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/746092

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX