使用ResponseBodyAdvice對@ResponseBody響應體加密結果去掉雙引號/新增響應頭
阿新 • • 發佈:2018-11-15
此篇文章寫給自己作為記錄。如有看不懂的,請留言。
需求:
大多數時候,我們後臺返回給前端的資料都是會做加密處理,同時並設定響應頭,也可能對往響應頭中新增資料。在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); } }