首页 > 其他分享 >记录Required request body is missing 问题(加解密实现RequestBodyAdvice引发的问题)

记录Required request body is missing 问题(加解密实现RequestBodyAdvice引发的问题)

时间:2022-08-19 16:33:29浏览次数:112  
标签:body RequestBodyAdvice missing Required 加解密 RequestBody

前言

搭建新demo测试的时候,controller接口接收前端参数时 加了@RequestBody注解,然后就一直报错Required request body is missing

排查

开始以为是前端请求方式不对,发现是POST没问题 ✔
又看了数据格式和header的Content-Type发现是application/json也没问题 ✔
@RequestBody改成@RequestBody(required = false) 发现接收的body是空的
@RequestBody去掉后 前端用表单提交 后台接受正常

这时候突然想到demo里的加解密是通过自定义注解和实现RequestBodyAdviceResponseBodyAdvice这两个接口实现的

    @Override
    public HttpInputMessage beforeBodyRead(HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class<? extends HttpMessageConverter<?>> converterType) throws IOException {
        //这里去判断方法中是否有自定义注解具体实现加解密
        、、、
        return inputMessage;
    }

所有的POST请求过来会先进RequestBodyAdvice处理后再出去,这时候就发现问题了

解决

    @Override
    public Object afterBodyRead(Object body, HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class<? extends HttpMessageConverter<?>> converterType) {
        //在此处理after后的逻辑
        return null;
    }

由于我在afterBodyRead方法中最终返回出去了null,导致请求通过Advice后变为null,最终报错Required request body is missing
所以在完成相应逻辑操作后,返回body即可

标签:body,RequestBodyAdvice,missing,Required,加解密,RequestBody
From: https://www.cnblogs.com/jackiez/p/16602440.html

相关文章