春季休息DTO是否可以是双向的?

时间:2020-04-24 22:21:05

标签: spring spring-boot rest spring-mvc oop

我对Spring REST Api非常陌生。几个疑问:

DOUBT1:

class UserDTO {
    long id;
    String name;
    int age;

    // getters and setters
}

案例1:

public void doSomethng(@RequestBody UserDTO userDTO){
    repository.findById(userDTO.getId());
}

案例2:

public void doSomethng(@RequestBody long id){ //Is this correct?
    repository.findById(id);
}

案例3:

public void doSomethng(@RequestBody Map<Long, Object> map){ //Is this correct?
    repository.findById(map.get("id"));
}

我实际上只需要为POST请求传递“ id”。

那么,在上述3个案例中,哪个是好的做法?对我来说,长身份证似乎是合理的。我不明白,在哪种情况下将Map作为RequestBody传递比DTO更好?

DOUBT2:

我目前将DTO用作BiDirectional。 那么,对DTO使用双向是正确的吗?我将面对DTO设计以下的任何问题吗?

class UserDTO {
    long id;
    List<OrderDTO> orders;
}

class OrderDTO {
    long orderId;
    UserDTO userDTO;
}

1 个答案:

答案 0 :(得分:0)

那么,在上述3个案例中,哪种做法是好的?对我来说,长身份证似乎是合理的。我不明白,在哪种情况下将Map作为RequestBody传递比DTO更好?

对于上述情况,由于您只需要id字段,并且想基于它进行搜索,所以我的建议是使用@PathVariable。参见以下示例:

supportFragmentManager.beginTransaction().add(R.id.navFragment, fragment).addToBackStack("").commit()

此外,对于琐碎的有效载荷,应考虑使用Map。如果您的有效负载具有许多嵌套JSON对象的复杂结构,则应使用DTO。

我目前将DTO用作BiDirectional。那么,对DTO使用双向是否正确?我将面对DTO设计以下的任何问题吗?

我看不到使用双向DTO的问题,因为它们只是在应用程序内转换您的请求/响应数据的一种方式。如果它们是双向实体,则序列化将是一个问题。

希望这会有所帮助!