在spring mvc Rest api中,post请求不与POJO类绑定数据。

时间:2016-07-22 07:27:20

标签: rest spring-mvc http-post

我是非常新的休息api概念。我正在尝试实现一个可以接收post方法的简单方法。问题是请求命中方法但是没有将数据绑定到POJO类。 这是我的代码。

@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课程。

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

POSTMAN view

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

谢谢。

1 个答案:

答案 0 :(得分:3)

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

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

   return return ResponseEntity.ok(compileRequest);
}

CompileRequest

之上添加以下内容
@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"

}