Post 请求不与 spring mvc Rest api 中的 POJO class 绑定数据。

Post request not bind data with POJO class in spring mvc Rest api.

我对休息api概念很陌生。我正在尝试实现一个可以接收 post 方法的简单方法。问题是请求命中了方法,但没有将数据与 POJO class 绑定。 这是我的代码。

@RestController
public class HomeController {

private static final Logger logger = LoggerFactory.getLogger(HomeController.class);

@ResponseBody
@RequestMapping(value = "/", method = RequestMethod.POST)
public CompileRequest home(@ModelAttribute CompileRequest compileRequest) {
    logger.info("user name : {}", compileRequest.getUserName()); // null
    logger.info("input file path : {}", compileRequest.getInputFilePath()); //null
    return compileRequest;
}
}

我没有使用@RequestBody,因为它给了我 415 http 错误。 这是我的 POJO class.

@Data // use lombok for getter and setter. 
public class CompileRequest {
   private String userName;
   private String inputFilePath;
}

userNameinputFilePath 字段剩余 null。我不明白为什么数据绑定不起作用。我该如何解决这个问题?

谢谢。

使用 return 如下。由于您想要休息响应,它还为您提供了发送正确状态代码的选项

public ResponseEntity<?> home(@RequestBody CompileRequest compileRequest) {

   return return ResponseEntity.ok(compileRequest);
}

CompileRequest class

之上添加以下内容
@NoArgsConstructor(access = AccessLevel.PUBLIC)
@AllArgsConstructor(access = AccessLevel.PUBLIC)

如果您还没有以下依赖项,请添加它

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>${jackson}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>${jackson}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>${jackson}</version>
        </dependency>

最后发送数据为Json

{

   "userName" : "name",
   "inputFilePath": "path"

}