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

相关推荐
赵锦川1 分钟前
大屏比例缩放
前端·javascript·html
海南java第二人1 分钟前
Cursor 高级实战:从 Spring Boot 到微服务,AI 驱动的全流程开发指南
人工智能·spring boot·微服务
好家伙VCC4 分钟前
# 发散创新:用 Rust构建高性能游戏日系统,从零实现事件驱动架构 在现代游戏开发中,**性能与可扩展性**是核心命题。传统基于
java·python·游戏·架构·rust
爱笑的源码基地11 分钟前
门诊his系统源码,中西医结合的数字化门诊解决方案
java·spring boot·源码·二次开发·门诊系统·云诊所系统·诊所软件源码
庞轩px12 分钟前
缓存Key设计的“七要七不要”
java·jvm·redis·缓存
小璐资源网12 分钟前
Java 21 新特性实战:虚拟线程详解
java·开发语言·python
SimonKing23 分钟前
全网爆火的OpenClaw保姆级教程Linux版,它来了。
java·后端·程序员
于慨31 分钟前
tauri
java·服务器·前端
WZTTMoon32 分钟前
从互斥锁到无锁,Java 20年并发安全进化史
java·python·安全
2501_9181269143 分钟前
学习所有6502写游戏控制器的语句
java·linux·网络·汇编·嵌入式硬件