繁体   English   中英

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

[英]How to narrow down methods with body parameters in SpringMVC?

很像@RequestMapping注解中的params ,缩小了查询参数的匹配方法。 相反,我想通过主体参数(如 JSON 格式)来实现这一点。 我是否需要实现自定义 @RequestMapping 注释?

您可以使用@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());
}

使用Map

@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一起使用的 object 的属性,您可以添加@Valid注释。 例如,以下将对 model 和模型子 model 字段(如果找到)进行级联验证。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM