考虑以下UserDTO类和公开端点以创建、更新和获取用户的UserController。
对于创建和更新操作,在UserDTO类中使用id属性没有意义。如果我使用swagger或其他自动生成的API文档,则会显示可以在创建终点传递ID。但系统不使用它,因为ID是在内部生成的。
如果我查看获取操作,可能可以摆脱ID属性,但在列出用户终点上肯定需要它。
我考虑在获取/列表终点返回内部User域对象。这样,我就可以从UserDTO类中删除id属性。
是否有更好的选项可供使用?
对于创建和更新操作,在UserDTO类中使用id属性没有意义。如果我使用swagger或其他自动生成的API文档,则会显示可以在创建终点传递ID。但系统不使用它,因为ID是在内部生成的。
如果我查看获取操作,可能可以摆脱ID属性,但在列出用户终点上肯定需要它。
我考虑在获取/列表终点返回内部User域对象。这样,我就可以从UserDTO类中删除id属性。
是否有更好的选项可供使用?
public class UserDTO {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@RestController
@RequestMapping(value = "/users", produces = MediaType.APPLICATION_JSON_VALUE)
public class UserController {
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public ResponseEntity<Void> create(@RequestBody UserDTO user) {
}
@RequestMapping(value = "{id}", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity<UserDTO> get(@PathVariable("id") int id) {
}
@RequestMapping(value = "{id}", method = RequestMethod.PUT)
@ResponseBody
public ResponseEntity<Void> update(@PathVariable("id") int id, @RequestBody UserDTO user) {
}
}
这个问题可能已经被问过,但我找不到。所以请原谅我重复提问。