New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BUG] 集成openapi有误,参考#387 #1256
Comments
@towangle 我不是很熟悉Swagger,需要些时间学习才能处理 |
@towangle 可以试试
|
有解决吗? |
@towangle @wenshao 我的版本是 <properties>
<java.version>17</java.version>
<spring-boot.version>3.0.4</spring-boot.version>
<!--fastjson2-->
<fastjson2.version>2.0.26</fastjson2.version>
<!--openapi-->
<springdoc-openapi-starter-webmvc-ui.version>2.0.4</springdoc-openapi-starter-webmvc-ui.version>
</properties>
<dependencies>
<!--fastjson2-->
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2-extension-spring6</artifactId>
<version>${fastjson2.version}</version>
</dependency>
<!--接口文档-->
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>${springdoc-openapi-starter-webmvc-ui.version}</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-common</artifactId>
<version>${springdoc-openapi-starter-webmvc-ui.version}</version>
</dependency>
</dependencies> 和你的一样,都是最新的。 然后按照fastjson2的推荐配置 @Configuration
@EnableWebMvc
public class WebMvcConfigurer extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
//自定义配置...
FastJsonConfig config = new FastJsonConfig();
config.setDateFormat("yyyy-MM-dd HH:mm:ss");
config.setReaderFeatures(JSONReader.Feature.FieldBased, JSONReader.Feature.SupportArrayToBean);
config.setWriterFeatures(JSONWriter.Feature.WriteMapNullValue, JSONWriter.Feature.PrettyFormat);
converter.setFastJsonConfig(config);
converter.setDefaultCharset(StandardCharsets.UTF_8);
converter.setSupportedMediaTypes(Collections.singletonList(MediaType.APPLICATION_JSON));
converters.add(0, converter);
}
} 注意这里有一个@EnableWebMvc注解,有没有这个注解,很不一样。
接下来,我们找到 它的响应是一个字节数组,且强制指定了MediaType。 然后我们再看看 可以看到并没有对字节数组类型的响应做特殊处理,直接 那么,我现在想到有两种解法。
这种方法的缺点是,
我们还可以再多思考一些,fastjson2是不是对所有的 一般情况下,我们是不会像openapi这样响应一个
@Configuration
@EnableWebMvc
public class WebMvcConfigurer extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
//自定义配置...
FastJsonConfig config = new FastJsonConfig();
config.setDateFormat("yyyy-MM-dd HH:mm:ss");
config.setReaderFeatures(JSONReader.Feature.FieldBased, JSONReader.Feature.SupportArrayToBean);
config.setWriterFeatures(JSONWriter.Feature.WriteMapNullValue, JSONWriter.Feature.PrettyFormat);
converter.setFastJsonConfig(config);
converter.setDefaultCharset(StandardCharsets.UTF_8);
converter.setSupportedMediaTypes(Collections.singletonList(MediaType.APPLICATION_JSON));
converters.add(0, converter);
}
} /**
* 首页 控制器
*
* @author Telechow
* @since 2023/1/30 15:24
*/
@RestController
@RequestMapping("/index")
@RequiredArgsConstructor(onConstructor_ = @Autowired)
public class IndexController {
private final IIndexService indexService;
/**
* 展示首页
*
* @param text 前端说的话
* @return byte[] 首页的一句话
* @author Telechow
* @since 2023/1/30 15:27
*/
@GetMapping(value = "/show")
// @GetMapping(value = "/show", produces = MediaType.APPLICATION_JSON_VALUE)
public byte[] show(@RequestParam(name = "text") String text) {
String show = indexService.show(text);
return show.getBytes(StandardCharsets.UTF_8);
}
} 结果是不论我们 因为 因为 且使用了
最后推销一下自己,辞职一个月了,最近在找工作。等一个有缘人内推。我的邮箱 |
点个赞,今天刚好遇到这个问题,跟我想的一样 |
https://oss.sonatype.org/content/repositories/snapshots/com/alibaba/fastjson2/fastjson2/2.0.27-SNAPSHOT/ |
问题描述
简要描述您碰到的问题。
springboot3.0.4 ,openapi 2.0.4, 无法正常使用
类似原问题
#387
环境信息
请填写以下信息:
重现步骤
如何操作可以重现该问题:
1.使用jackson作为消息转换器,正常使用:
2.使用fastjson2 作为消息转换器,接口返回异常:
返回header无Content-Length 。手工设置无用。
该版本内,无任何有关openapi的处理,
https://github.com/alibaba/fastjson2/blob/32a4f418208a859dea324e2bac6570bad9f6ce3b/extension-spring5/src/test/java/com/alibaba/fastjson2/springdoc/OpenApiJsonWriterTest.java
测试类没看懂
#387 修复没看懂
期待的正确结果
对您期望发生的结果进行清晰简洁的描述。
#387 说2.0.6修复,现在版本2.0.26,期望处理。
相关日志输出
请复制并粘贴任何相关的日志输出。
附加信息
如果你还有其他需要提供的信息,可以在这里填写(可以提供截图、视频等)。
The text was updated successfully, but these errors were encountered: