禁止Spring接受POST参数作为查询参数

时间:2016-03-01 06:48:23

标签: java spring spring-mvc spring-boot

我有一个控制器如下:

@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&param2=b之类的POST请求,它仍会接受它。我已将ValidationRequest内的所有字段标记为必填字段。

有什么建议吗?我在这里错过了什么吗?

2 个答案:

答案 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) {
..................
}