它很像@RequestMapping注释中的params,它缩小了具有查询参数的匹配方法。相反,我希望通过主体参数(如JSON格式(来实现这一点。我需要实现一个自定义的@RequestMapping注释吗?
YOu可以使用@RequestBody来实现它。它将有效负载与代码中指定的名称相匹配。
https://www.baeldung.com/spring-request-response-body
您只需要使用@RequestBody
。请注意,这不仅允许POJO,还可以将其与Map一起使用。
使用POJO:
@RequestMapping(value="/",method = RequestMethod.POST)
public String doSomething(@RequestBody MyDto dto) {
return service.requestOTP(dto.getField1(), dto.getField2());
}
使用地图:
@RequestMapping(value="/",method = RequestMethod.POST)
public String doSomething(@RequestBody Map<String, Object> body) {
return service.requestOTP(body.get("field1").toString(), body.get("field2").toString());
}
注意:如果要验证与@RequestBody
一起使用的对象的属性,可以添加@Valid
注释。例如,以下内容将对模型和模型子模型字段(如果找到(进行级联验证。
public class MyDto {
@NotNull
@Valid
private String field1;
private String field2;
//getters and setters
}
@RequestMapping(value="/",method = RequestMethod.POST)
public String doSomething(**@Valid** @RequestBody MyDto dto) {
return service.requestOTP(dto.getField1(), dto.getField2());
}
点击此处了解@Valid
的精彩介绍https://www.logicbig.com/tutorials/java-ee-tutorial/bean-validation/cascaded-validation.html