如何在SpringMVC中缩小带有主体参数的方法



它很像@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

最新更新