400错误的请求试图发布到Spring端点

时间:2019-02-20 14:24:08

标签: java spring rest

尝试将其发布到我的Spring API

{
    "test1":"test1",
    "test2":"test2",
    "test3":"test3"
}

但是我一直收到400 Bad Request的回复。

控制器看起来像这样:

@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();
    }
}

TestDTO看起来像这样:

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..

}

有人可以告诉我我在做什么错吗?

1 个答案:

答案 0 :(得分:3)

您必须在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 Framework首先创建该类,然后使用反射来设置值。