Java 400尝试发布到Spring端点的错误请求
试图将其发布到我的Spring apiJava 400尝试发布到Spring端点的错误请求,java,spring,rest,Java,Spring,Rest,试图将其发布到我的Spring api { "test1":"test1", "test2":"test2", "test3":"test3" } 但我一直收到一个400错误请求响应 控制器如下所示: @RestController @RequestMapping("/rest/api") public class DokumentController { @PostMapping(value = "/test", consumes = MediaType.A
{
"test1":"test1",
"test2":"test2",
"test3":"test3"
}
但我一直收到一个400错误请求
响应
控制器如下所示:
@RestController
@RequestMapping("/rest/api")
public class DokumentController {
@PostMapping(value = "/test", consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity test(@RequestBody TestDTO body) {
System.out.println(body.getTest1());
return ResponseEntity.ok().build();
}
}
public class TestDTO {
private String test1;
private String test2;
private String test3;
TestDTO(String test1, String test2, String test3) {
this.test1 = test1
this.test2 = test2
this.test3 = test3
}
public String getTest1() {
return test1;
}
public void setTest1(String test1) {
this.test1 = test1;
}
//And so on..
}
TestDTO如下所示:
@RestController
@RequestMapping("/rest/api")
public class DokumentController {
@PostMapping(value = "/test", consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity test(@RequestBody TestDTO body) {
System.out.println(body.getTest1());
return ResponseEntity.ok().build();
}
}
public class TestDTO {
private String test1;
private String test2;
private String test3;
TestDTO(String test1, String test2, String test3) {
this.test1 = test1
this.test2 = test2
this.test3 = test3
}
public String getTest1() {
return test1;
}
public void setTest1(String test1) {
this.test1 = test1;
}
//And so on..
}
有人能告诉我我做错了什么吗?您必须创建一个在DTO类中没有参数的构造函数:
public class TestDTO {
private String test1;
private String test2;
private String test3;
//Default no argument constructor
TestDTO() {
}
TestDTO(String test1, String test2, String test3) {
this.test1 = test1
this.test2 = test2
this.test3 = test3
}
public String getTest1() {
return test1;
}
public void setTest1(String test1) {
this.test1 = test1;
}
//And so on..
}
Jackson框架首先创建类并使用反射来设置值。您必须创建一个在DTO类中没有参数的构造函数:
public class TestDTO {
private String test1;
private String test2;
private String test3;
//Default no argument constructor
TestDTO() {
}
TestDTO(String test1, String test2, String test3) {
this.test1 = test1
this.test2 = test2
this.test3 = test3
}
public String getTest1() {
return test1;
}
public void setTest1(String test1) {
this.test1 = test1;
}
//And so on..
}
Jackson框架首先创建类,并使用反射来设置值。@arnauddenoylle
@PostMapping
fine@Jens我用的是邮递员。在主体中添加了JSON作为原始JSON(application/JSON)格式。可能是我发出请求的方式。spring似乎无法映射到我的TestDTO类。不知道why@mTv您在日志文件中看到任何错误吗?您可以发布堆栈跟踪吗?@ArnaudDenoyelle@PostMapping
正在运行fine@Jens我用的是邮递员。在主体中添加了JSON作为原始JSON(application/JSON)格式。可能是我发出请求的方式。spring似乎无法映射到我的TestDTO类。不知道why@mTv你在日志文件中看到任何错误吗?你能发布stacktrace吗?