chrome游览器JSON Formatter插件无效问题排查,FastJsonHttpMessageConverter导致Content-Type返回不正确

问题描述

chrome游览器又一款JSON插件叫JSON Formatter,游览器GET请求调用接口时,如果返回的数据是json格式,则会自动格式化展示,类似这样:

但是今天突然发现怎么也格式化不了,打开一个json文件倒是可以格式化,但是请求接口返回json就是无法格式化

问题原因

反复卸载重装插件都没有解决,所以想到会不是接口返回的数据有问题,排查发现接口返回的Response Headers中content-type是 text/html,这就不对劲了,按理说springboot项目Controller只要用了@RestController注解,返回实体对象的话,content-type应该默认就是application/json才对,这里居然不对

解决方案

既然返回的Content-Type不对,这里最简单的方案

复制代码
@GetMapping(value = "/pageQuery/{apiPostfix}", produces = "application/json;charset=UTF-8")

@GetMapping注解里加上produces属性配置为指定的,实测确实可以解决

但是springboot项目Controller只要用了@RestController注解,返回实体对象的话,content-type应该默认就是application/json才对,这里一定是哪里出了问题才会有变化,经过排查发现在公司的依赖库里找到这么个类

其中46行添加了一个FastJson的消息转换器,而且没有设置setSupportedMediaType属性,这里默认指是*/*,导致了后续返回数据时出了问题。

这里要注意在添加FastJsonHttpMessageConverter时要设置SupportedMediaTypes

复制代码
converter.setSupportedMediaTypes(Collections.singletonList(MediaType.APPLICATION_JSON_UTF8));

或者干脆不要用FastJsonHttpMessageConverter了,一般MappingJackson2HttpMessageConverter已经完全够用了,引入这么个消息转换器不知道哪天又出什么BUG

相关推荐
不光头强13 小时前
Java中的异常
java·开发语言
毕设源码-赖学姐13 小时前
【开题答辩全过程】以 高校资源共享平台的设计与实现 为例,包含答辩的问题和答案
java
lichenyang45313 小时前
组件设计模式与通信
前端·javascript·设计模式
shamalee13 小时前
MS SQL Server partition by 函数实战二 编排考场人员
java·服务器·开发语言
aisifang0013 小时前
MS SQL Server partition by 函数实战三 成绩排名
java
常利兵13 小时前
Spring Boot接口版本控制:解锁API优雅升级姿势
spring boot·后端·状态模式
C++chaofan13 小时前
JUC 并发编程:对可见性、有序性与 volatile的理解
java·开发语言·spring·java-ee·juc·synchronized·
无名-CODING13 小时前
Tomcat 底层核心知识点字典(面试必备)
java·面试·tomcat
im_AMBER13 小时前
前端性能优化之首屏提速
前端·学习·性能优化
XiYang-DING13 小时前
【Java SE】双亲委派模型
java·开发语言