在我的控制器中,我有一个用以下映射映射的方法:@PostMapping(“/”)。
此方法需要一个我试图捕获的请求主体,如下所述:
使用这两种方法对我来说都很好,我只是进退两难,如果直接在实体类中接受请求体是一个好主意和最佳实践的话。
我不想在controller类中公开我的实体类,因为我不确定这是否是一个好主意。
@PostMapping("/")
public String create(@Valid @RequestBody 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;
}
@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;
}
这两种方法都给出了相同的结果,更多的是关注要遵循的最佳实践。
更多的是与软件设计原理有关。在本例中,这与关注点的分离有关。让我们假设您直接使用一个Tasks实体来进行DB操作和REST操作,而不是将Task(某种DTO)和Tasks(实体)分开。
是的,可能会有一些缺点,比如您需要更多的类来表示单个对象,但这就是分离。它使项目具有可维护性,易于重构/更改代码,并最大限度地减少更改的影响。
我需要实现一个接受对象(json)的postendpoint。但对象中的某些参数是可选的。所以,当我尝试进行api调用时,它并没有映射到相应的方法。 显示页面未找到Err: 404 我发送的请求正文只包含两个字段,其余的都是可选的。 对象的Pojo Spring控制器: 卷曲命令: 有效载荷 } Rest控制器:
我正在使用Java和Spring构建一个RESTAPI,我需要在我的控制器中处理一个POST请求,但我需要从该请求中提取主体,它是一个JSON,也是该请求的“来源”, 我有几个问题:首先是如何获取该请求的来源(我猜是在标题中移动的url?),是否有与@RequestBody类似的注释?。 我的第二个问题是,在这种post方法中,通常应该返回什么对象作为响应。
我有以下代码 现在,当我去http://localhost:8080/recipe/2/update,点击提交,我调用@PostMap方法,更新后重定向我到 但是我在控制台上发现了这个错误 这个在网上 当我将@PostMap更改为@Request estMap或添加额外的@GetMaap时,一切正常 有人能解释一下吗?或者我该怎么做才能让@PostMapping按预期工作。 更新:如下面的评论所述
问题内容: 我有一个Sinatra应用程序,并且在我的大多数控制器中,json都会传入并在params对象中自动获取。但是,除非我用before方法来拉取request.body参数,否则我将获得一个根本不获取参数的后期操作.body参数将它们解析为JSON并将它们合并到params哈希中。 这是控制器以及filter方法: 我看到的输出基本上是,控制器操作中的参数实际上正确地位于其中。但是,如果
问题内容: 我正在开发一个使用大量ajax的grails应用程序。如果请求是ajax调用,那么它应该给出响应(这部分正在工作),但是如果我在浏览器中输入URL,它应该带我到主页/索引页面而不是请求的页面。下面是Ajax调用的示例gsp代码。 如果我们在浏览器URL栏中键入http:// localhost:8080 / Dash / todo / list ,则控制器应重定向到http:// lo
我可以通过创建一个新的控制器和ModelAndView方法来进行POST调用,但现在我又面临一个问题,数据无法从JSP传递到控制器。我的JSP代码是: 有一个名为DebitModel的正常bean类。我尝试在许多地方搜索未传递的数据,并找到了提到的form:input解决方案,但如果使用此方法,则没有绑定FoundException'java.lang.IllegalStateException: