使用ResponseBodyAdvice对@ResponseBody响应体加密结果去掉双引号/添加响应头

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Michael_HM/article/details/82737144

此篇文章写给自己作为记录。如有看不懂的,请留言。

需求:

     大多数时候,我们后台返回给前端的数据都是会做加密处理,同时并设置响应头,也可能对往响应头中添加数据。在SpringMVC中我们通常采用Restful 风格进行开发,使用@ResponseBody返回 Json 数据。

       采用注解式。

开发:

spring5之前继承WebMvcConfigurerAdapter 

spring5之后实现WebMvcConfigurer

我这里使用的是SpringBoot 2.0.4,所以是spring5

@Configuration
public class HttpConverterConfig implements WebMvcConfigurer {

    public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(){
        return new MappingJackson2HttpMessageConverter(){
            @Override
            protected void writeInternal(Object object, Type type, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {
                if(object instanceof String){
                    Charset charset = this.getDefaultCharset();
                    StreamUtils.copy((String)object, charset, outputMessage.getBody());
                }else{
                    super.writeInternal(object, type, outputMessage);
                }
            }
        };
    }

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        MappingJackson2HttpMessageConverter converter = mappingJackson2HttpMessageConverter();
        converter.setSupportedMediaTypes(new LinkedList<MediaType>(){{
            add(MediaType.TEXT_HTML);
            add(MediaType.APPLICATION_JSON_UTF8);
        }});
        converters.add(new StringHttpMessageConverter());
        converters.add(converter);
    }
}

猜你喜欢

转载自blog.csdn.net/Michael_HM/article/details/82737144
今日推荐