我需要实现一个接受对象(json)的postendpoint。但对象中的某些参数是可选的。所以,当我尝试进行api调用时,它并没有映射到相应的方法。
显示页面未找到Err: 404
我发送的请求正文只包含两个字段,其余的都是可选的。
对象的Pojo
public class Post {
private String owner;
private String activity;
private Boolean edited;
private String clientApp;
private String serviceProvider;
private long id;
private Text text;
public static class Text {
private String text;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
public String getOwner() {
return owner;
}
public void setOwner(String owner) {
this.owner = owner;
}
public String getActivity() {
return activity;
}
public void setActivity(String activity) {
this.activity = activity;
}
public Boolean getEdited() {
return edited;
}
public void setEdited(Boolean edited) {
this.edited = edited;
}
public String getClientApp() {
return clientApp;
}
public void setClientApp(String clientApp) {
this.clientApp = clientApp;
}
public String getServiceProvider() {
return serviceProvider;
}
public void setServiceProvider(String serviceProvider) {
this.serviceProvider = serviceProvider;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public Text getText() {
return text;
}
public void setText(Text text) {
this.text = text;
}
}
Spring控制器:
@RequestMapping(method = RequestMethod.POST, value="/publish/post",consumes = MediaType.APPLICATION_JSON_VALUE)
public String publish(
@RequestBody Post map) {
logger.info("Post method")
return "Completed";
}
卷曲命令:
curl -X POST \
http://localhost:4569/rest/publish/post \
-H 'Content-Type: application/json' \
-d '{
"owner": "Owner of the Company",
"text": {
"text": "Png new image"
}
}'
有效载荷
{
"owner": "Owner of the Company",
"text": {
"text": "Png new image"
}
}
Rest控制器:
@RestController
@RequestMapping("/rest")
public class SocialController {
private static final Logger logger = LoggerFactory.getLogger(SocialController.class);
@RequestMapping(method = RequestMethod.POST, value="/publish/post",consumes = MediaType.APPLICATION_JSON_VALUE)
public String publish(
@RequestBody Post map) {
logger.info("Post method")
return "Completed";
}
}
您的URL中缺少应用程序根目录http://localhost:4569/[应用程序名称]/rest/publish/post
pojo中的可选字段在调用rest方法时不会产生问题。
我有以下代码 现在,当我去http://localhost:8080/recipe/2/update,点击提交,我调用@PostMap方法,更新后重定向我到 但是我在控制台上发现了这个错误 这个在网上 当我将@PostMap更改为@Request estMap或添加额外的@GetMaap时,一切正常 有人能解释一下吗?或者我该怎么做才能让@PostMapping按预期工作。 更新:如下面的评论所述
在我的控制器中,我有一个用以下映射映射的方法:@PostMapping(“/”)。 此方法需要一个我试图捕获的请求主体,如下所述: 使用这两种方法对我来说都很好,我只是进退两难,如果直接在实体类中接受请求体是一个好主意和最佳实践的话。 我不想在controller类中公开我的实体类,因为我不确定这是否是一个好主意。 java 这两种方法都给出了相同的结果,更多的是关注要遵循的最佳实践。
我正在使用Java和Spring构建一个RESTAPI,我需要在我的控制器中处理一个POST请求,但我需要从该请求中提取主体,它是一个JSON,也是该请求的“来源”, 我有几个问题:首先是如何获取该请求的来源(我猜是在标题中移动的url?),是否有与@RequestBody类似的注释?。 我的第二个问题是,在这种post方法中,通常应该返回什么对象作为响应。
根据请求主体中的session_type,我必须将请求映射到特定的POJO(JSON->JAVA POJO)。 例如,如果请求正文中的'session_type'是'typeX',那么请求应该映射到ClassX POJO。如果请求正文中的“session_type”是“type y”,那么请求应该映射到ClassY POJO。 如果有一种方法可以使用某种requestbody注释来完成它呢?
我已经研究了thymeleaf include和replace,但它们似乎只用于加载html片段,而不是整个Spring MVC请求
我在Spring控制器的2个webservice中使用了相同的ArrayList,所以我想使用请求或会话范围从DB中获取一次,我尝试制作一个bean } 在控制器中 application context CTX = new AnnotationConfigApplicationContext(example bean。类);AttendeesBean attendee bean = CTX .