我有一个控制器如下:
@RequestMapping(path = "validate", method = POST, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<Object> validate(@Valid @ModelAttribute ValidationRequest request) {
}
ValidationRequest
是一个有几个字段的POJO。
通过此设置,我希望此方法接受仅通过请求主体传递的POST参数。但是,如果我们在没有任何正文的情况下发出http://localhost:8080/validate?param1=a¶m2=b
之类的POST请求,它仍会接受它。我已将ValidationRequest
内的所有字段标记为必填字段。
有什么建议吗?我在这里错过了什么吗?
答案 0 :(得分:1)
也许尝试@RequestBody而不是@ModelAttribute。
答案 1 :(得分:0)
您可以使用@PathParam
。
@POST
@Path("/validate/{param1}/{param2}")
@Consumes({ "application/json", "text/plain" })
@Produces({ "application/json" })
public ResponseEntity<Object> validate(@Valid @ModelAttribute ValidationRequest request,
@PathParam("param1") String param1, @PathParam("param2") String param2) {
..................
}