Spring REST-将单个属性从请求主体映射到方法参数

时间:2019-11-13 17:08:05

标签: java spring-boot spring-mvc spring-restcontroller

我有一个POST端点,可以将传入的请求正文加载到用户模型中:

@PostMapping(path = "/users")
@ResponseStatus(HttpStatus.CREATED)
public Callable<String> createUser(
    @RequestBody User user,
    @MyCustomMapping("birthDate") LocalDate birthDate) {
        return () -> {
            return birthDate; // Just for testing
        };
}

从自定义注释 MyCustomMapping 中可以看到,我还想从请求正文的 birthDate 参数中仅加载'birthDate'字段。

要解析参数值,我在Web-mvc参数解析器列表中添加了 HandlerMethodArgumentResolver 的此实现:

public class MyCustomArgumentResolver implements HandlerMethodArgumentResolver {
    @Override
    public boolean supportsParameter(MethodParameter parameter) {
        return parameter.hasParameterAnnotation(MyCustomMapping.class);
    }

    @Override
    public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, 
        NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
        // Extract the field value from request body and return
    }
}

我无法从请求正文中提取值。

有人可以帮忙吗?

0 个答案:

没有答案