java - Spring Controller 中 Post 方法的请求正文
问题描述
我需要实现一个接受对象(json)的后端点。但是对象中的一些参数是可选的。因此,当我尝试进行 api 调用时,它没有映射到相应的方法。
它显示页面未找到错误: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;
}
}
弹簧控制器:
@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"
}
}
休息控制器:
@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/[App-name]/rest/publish/post中缺少应用程序根目录
pojo 中的可选字段调用 rest 方法没有问题。
推荐阅读
- reactjs - reactjs和firebase:不重定向到admin-dashboard,需要在登录前点击两次
- docker - 如何在 Docker 中授权 Google API
- azure - Next.js 在 azure 上部署,在没有 trailingSlash 的情况下调用路由时重定向到 azure 错误页面
- google-data-studio - 衡量每件产品每天的销量(谷歌数据洞察)
- blockchain - 清除平行链问题
- flutter - Flutter - 使用提供程序从共享首选项中的布尔变量应用主题模式暗/亮
- node.js - 当来自外部域时,Nginx 代理传递有时会失败
- android - 有没有办法改变 Android 12 中启动画面图标的形状?
- doctrine-orm - 学说不断增加内存使用
- reactjs - 使用样式组件时,Webpack 模块联合因 Next JS 失败