Рассмотрите следующие классы UserDTO и UserController, которые предоставляют конечные точки для создания, обновления и получения пользователя.Тот же/другой объект DTO в создании, обновлении и получении конечных точек отдыха?
Наличие свойства id в классе UserDTO не имеет смысла для создания и обновления. Если я использую swagger или другую автоматическую сгенерированную документацию API, тогда это показывает, что идентификатор может быть передан в конечной точке создания. Но система не использует его, поскольку идентификаторы генерируются внутри.
Если я посмотрю на get, возможно, я смогу избавиться от свойства id, но это обязательно необходимо в конечной точке пользователя списка.
Я думал о возврате внутреннего объекта пользовательского домена в конечных точках get/list. Таким образом, я могу избавиться от класса id формы UserDTO.
Есть ли лучший вариант, который я могу использовать для этого?
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) {
}
}
Возможно, этот вопрос был задан, но я не мог найти. Так что извините меня за дублированный вопрос.
Ваэль да, это один из вариантов. Но я упомянул только одно такое свойство. Есть еще много таких, как createdBy, createdTime, updatedBy, updatedTime и т. Д., Которые требуются в get, но не имеют смысла для создания/обновления. Возможно использовать этот шаблон и вместо вызова IdentifiableUserDTO вызывать что-то еще, не уверен, что будет уместно. –