我对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;
}
答案 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的问题,因为它们只是在应用程序内转换您的请求/响应数据的一种方式。如果它们是双向实体,则序列化将是一个问题。
希望这会有所帮助!