文章目录
- 1. 复现问题
- 2. 分析问题
- 3. 解决问题
- 4. 其他方法解决此异常
- 5. 其他说明
1. 复现问题
今天在本地启动项目后,刷新Knife4j
接口文档,却报出如下错误:
即Knife4j文档请求异常
。
2. 分析问题
报出Knife4j文档请求异常
错误时,赶紧打开控制台,如下图所示:
控制台提示为Unchecked runtime.lastError: The message port closed before a response was received.
简单理解就是端口号关闭
了,于是查看后端的端口是否关闭:
后端哪里出现了问题呢?百思不得其解。
正赶上最近ChatGPT
很火,于是借助chatGPT
来解决我的问题,如下图所示:
因为是我本地启动的项目,可以排除请求超时的问题。
接下来使用postman
来测试登录接口,如下图所示:
从上图可以看出来,服务器不存在无响应的问题。
因为引入的是Knife4j
的jar
包,不需要写控制器的代码,但需要进行配置。
于是,查看我的Knife4j
的配置是否有问题,如下代码所示:
public class Knife4jConfiguration {
private OpenApiExtensionResolver openApiExtensionResolver;
@Autowired
public Knife4jConfiguration(OpenApiExtensionResolver openApiExtensionResolver) {
this.openApiExtensionResolver = openApiExtensionResolver;
}
@Bean(value = "dockerBean")
public Docket dockerBean() {
Docket docket =
new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
// 分组名称
.groupName("测试服务")
.select()
// 这里指定Controller扫描包路径
.apis(RequestHandlerSelectors.basePackage("com.cloud.test.controller"))
.paths(PathSelectors.any())
.build()
.extensions(openApiExtensionResolver.buildSettingExtensions());
// 指定使用Swagger2规范
return docket;
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
// 描述字段支持Markdown语法
.description("测试Knife4j")
.termsOfServiceUrl(“127.0.0.1”)
.contact(new Contact("test", "无", "无"))
.version("1.0")
.build();
}
}
蓦然发现,我没有添加@Configuration
,才导致Knife4j文档请求异常
。
3. 解决问题
既然没有添加@Configuration
,那就按如下方式添加即可:
@Configuration
public class Knife4jConfiguration {
private OpenApiExtensionResolver openApiExtensionResolver;
//此处省略上述代码相同的部分
......
}
如果上述方法,无法解决你的问题,可以参考以下几种方法。
4. 其他方法解决此异常
- 代码中没有添加
@EnableSwagger2WebMvc
如果你引入的Knife4j
的jar
包较低,同时,还需要添加@EnableSwagger2WebMvc
注解,如下代码所示:
@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfiguration {
private OpenApiExtensionResolver openApiExtensionResolver;
//此处省略上述代码相同的部分
......
}
- 项目没有正式启动
一般情况,我们启动java
项目时,相对来说比较耗时。
也就是说,你在刚启动项目,就去方法Knife4j
接口请求文档,也会报出这个错误。
5. 其他说明
-
如果你对
Knife4j
比较感兴趣,可以参考这篇博文:全网最全的Knife4j swaggerj介绍 -
ChatGPT
的介绍
之前喜欢使用谷歌翻译报错的信息,自从出现了ChatGPT
,便喜欢使用ChatGPT
来翻译。
如果你想了解什么是ChatGPT
以及它的用法,可以点击如下链接:
-
全网最详细的介绍ChatGPT
-
ChatGPT、低代码等技术出现会不会导致底层程序员失业
-
全网推荐7款github上有趣的ChatGPT的应用源码
-
如何调用ChatGPT的API接口到官方例子的说明以及GitHub上的源码应用
-
全网详细解读基于java调用ChatGPT的API接口