gpt4 book ai didi

java - 将 json 参数发布到 REST 服务时出错

转载 作者:行者123 更新时间:2023-12-01 13:49:13 26 4
gpt4 key购买 nike

我尝试将一个对象发布到使用 Spring MVC 实现的 RESTful 服务,但它不起作用。

在我的测试页面中,我有:

var obj = { tobj: {id: 1, desc: 'yesh'}};
$.ajax({
url : 'http://localhost:8180/CanvassService/canvass/test',
type : 'POST',
data : JSON.stringify(obj),
contentType : 'application/json; charset=utf-8',
dataType : 'json',
async : false,
success : function(msg) {
alert(msg);
}
});

我正在使用 json2.js 来字符串化我的对象。

在我的 Controller 中,我有:

@RequestMapping(value="/canvass/test", method = RequestMethod.POST)
public void createTest(@RequestParam TestObj tobj)
throws ServiceOperationException {
// test method
int i = 0;
System.out.println(i);
}

我的实体类是:

public class TestObj {

private int id;
private String desc;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getDesc() {
return desc;
}

public void setDesc(String desc) {
this.desc = desc;
}

}

当我将对象发布到 Controller 时,我收到 HTTP 400 错误:

HTTP Status 400 - Required TestObj parameter 'tobj' is not present

我做错了什么?我发送的参数/对象的格式似乎不正确,但我不明白为什么......

最佳答案

您正在使用 JSON 数据执行 POST,而在 Controller 中您尝试将其解释为参数(即 ?tobj=someValue)。

尝试使用以下方法:

@RequestMapping(value="/canvass/test", method = RequestMethod.POST)
public void createTest(@RequestBody TestObj tobj)
throws ServiceOperationException {
// test method
int i = 0;
System.out.println(i);
}

此外,您不必嵌套 JSON 数据:

所以 {id: 1, desc: 'yesh'} 而不是 { tobj: {id: 1, desc: 'yesh'}}

在水下使用 Jackons 时,这应该有效。

关于java - 将 json 参数发布到 REST 服务时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20093578/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com