【发布时间】:2020-01-09 21:55:19
【问题描述】:
在我的控制器中,我有一个使用以下映射映射的方法: @PostMapping("/")。
此方法需要一个我试图捕获的请求正文,如下所述:
公共字符串创建(@RequestBody 任务任务)
Task 是我创建的一个自定义类,它映射到请求中预期的请求正文的结构。
我是 Spring Boot 新手,不确定最佳实践标准如何。
我的疑问是在我的方法 create() 中,我应该直接在我的实体类中捕获请求体,还是应该有一个类似的 pojo 来捕获请求体,然后我将它映射到我的实体类?
任何关于最佳实践和标准约定的建议都会有所帮助。
使用这两种方法对我来说效果很好,如果直接在实体类中接受请求正文是一个好主意和最佳实践,我只是进退两难。
不想在控制器类中公开我的实体类,因为我不确定这是否是个好主意。
@PostMapping("/")
public String create(@Valid @RequestBody Task task) {
}
Task.java
public final class Task {
@NonNull
private int id;
@NotBlank(message = "Name is a mandatory field")
private String name;
private String decription;
@NotBlank(message = "date is a mandatory field")
private String date;
private boolean status;
@NotBlank(message = "severenes is a mandatory field")
private String severenes;
public Task(int id, String name, String decription, String date, boolean status, String severenes) {
super();
this.id = id;
this.name = name;
this.decription = decription;
this.date = date;
this.status = status;
this.severenes = severenes;
}
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;
}
public String getDecription() {
return decription;
}
public void setDecription(String decription) {
this.decription = decription;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public boolean isStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
public String getSeverenes() {
return severenes;
}
public void setSeverenes(String severenes) {
this.severenes = severenes;
}
}
Tasks.java(实体类)
@Entity
@Table(name = "tasks")
public class Tasks {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "id")
private int id;
@Column(name = "name")
private String name;
@Column(name = "description")
private String description;
@Column(name = "date")
private LocalDateTime date;
@Column(name = "status")
private boolean status;
@Column(name = "severenes")
private String severenes;
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;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public LocalDateTime getDate() {
return date;
}
public void setDate(LocalDateTime date) {
this.date = date;
}
public boolean isStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
public String getSeverenes() {
return severenes;
}
public void setSeverenes(String severenes) {
this.severenes = severenes;
}
}
上述两种方法给出了相同的结果,更多的是关注要遵循的最佳实践。
【问题讨论】:
标签: spring-boot java-8