首页 > 其他分享 >knife4j/swagger救援第一现场

knife4j/swagger救援第一现场

时间:2024-03-21 14:22:05浏览次数:26  
标签:knife4j 2.0 救援 bean springfox swagger example

1、前方来报,测试环境springboot项目无法启动,现场如下:

Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
[ERROR] 2024-03-20 12:54:42,718 --main-- [org.springframework.boot.diagnostics.LoggingFailureAnalysisReporter]

***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 0 of constructor in springfox.documentation.swagger.schema.ApiModelPropertyPropertyBuilder required a bean of type 'springfox.documentation.spring.web.DescriptionResolver' that could not be found.


Action:

Consider defining a bean of type 'springfox.documentation.spring.web.DescriptionResolver' in your configuration.

 

2、现场痕迹很明显,类ApiModelPropertyPropertyBuilder中需要一个bean DescriptionResolver,但是无法找到,故直接走入现场,如下图所示:

3、根据经验得知是bean DescriptionResolver无法被正常注入导致的,很大情况可能是因为jar冲突导致,寻找蛛丝马迹,如下图所示:

4、定位到原因是项目中引用其他项目中的jar,结果导致了项目中有两个不同版本的knife4j-spring-boot-starter(一个2.0.2,一个2.0.7),简单粗暴,把版本都调整为2.0.2。原本想着到这里问题都已经解决了。下意识的看了下前端swagger接口是否正常,结果发现swagger接口展示有问题:

页面提示:Knife4j文档请求异常
页面console控台提示:Unexpected token ' in JSON

5、谷歌浏览器前端debug一顿调试,定位问题是因为后端返回的数据结构有问题,根本原因因为版本2.0.2较低,无法解析ApiModelProperty中的example属性为json字符串,如下图所示:

属性使用ApiModelProperty注解后,在给与example类型的时候里面写了一个json字符串

@ApiModelProperty(name="xx",example="{'xx':'dd'}")
private String test;

就是类似以上这种情况,导致springfox-swagger提供的接口/v2/api-docs返回的json非法,使用前端的JSON.parse()函数无法转换为JSON对象

6、处理方案:

a、knife4j统一使用版本2.0.2去掉example

b、knife4j统一使用版本2.0.7或其他版本,可以支持example

 

至此问题解决。

 

标签:knife4j,2.0,救援,bean,springfox,swagger,example
From: https://www.cnblogs.com/zjBoy/p/18087230

相关文章

  • Nginx 配置访问 swagger 页面
    假设SpringBoot的应用部署在http://192.168.1.15:8093上,nginx.conf配置文件里面增加如下配置location~^/swagger/(.*){proxy_redirectoff;#proxy_set_headerHost$host;proxy_set_headerHost$host:$server_port;#添加:$server_portproxy_set_headerX-Real-IP......
  • springboot-Swagger
    Swagger简介前后端分离Vue+SpringBoot后端时代:前端只用管理静态页面:html==>后端。。模版引擎JSP=>后端是主力前后端分离后端:后端控制层,服务层,数据访问层【后端团队】前端:前端控制层,视图层【前端团队】Swagger号称世界上最流行的API框架RestfulApi文档在线自动生成......
  • Swagger
    Swaggerknife4j对swagger进行了封装,在访问在线接口文档YApi时在pom中导入knife4j的依赖即可。Swagger可以在线查看你写的ajax请求。请求路径,请求参数等。还可以查看ajax请求后的响应数据。swagger用法1.导入knife4j的maven坐标(依赖)。 <!--knife4j读取yapi接口文档--> <......
  • swagger配置
    1、注入依赖<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version></dependency><dependency><groupId>io.springfox</groupId>......
  • Fastapi中Swagger UI加载缓慢的解决方案
    在国内网络经常遇到SwaggerUI加载缓慢的问题,这是由于SwaggerUI的CSS和JS代码源在国外导致的,所以我们的解决方法是更改SwaggerUI的CSS代码和JS代码源到国内的CND实现加速。这里以Fastapi框架的SwaggerUI加载缓慢举例:一、解决方法在main.py(入口代码)代码中新增如下代码:fromfa......
  • L2-001 紧急救援
    这道题就是在dijkstra的基础上增加了一些东西。代码有参考别人,最后一步的处理很好。#include<bits/stdc++.h>usingnamespacestd;constintmaxv=0x7fffffff;intedges[510][510];//从i到j的长度intdist[510];//最短路径boolcheck[510];//是否在集合之中intnum[510......
  • knife4j配置
    版本:SpringBoot2.5.5Knife4j导入Maven坐标<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>2.0.7</version>&l......
  • Swagger配置
    一定一定要注意各个模块的版本,否则会直接启动不起来或者报各种各样奇怪的错误!!!!版本:SpringBoot2.3.12Mybatis8.0.31swagger2.7.0导入Maven依赖<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId>......
  • 【萌狼蓝天】swagger速成
    相关链接编辑器:https://editor.swagger.io/文档:https://openapi.apifox.cn/基础信息设置openapi:3.0.3info:title:后端服务接口description:|-##描述由萌狼蓝天创建##相关介绍`terOfServer`:服务隐私条款##相关连接......
  • Swagger的介绍以及使用
    今天学习了Swagger。Swagger是一个规范且完整的框架,用于生成、描述、调用以及可视化RESTful风格的web服务。其主要的功能:有利于进行前后端分离式开发,有利于团队协作自动生成接口文档,缓解编写接口文档的压力进行功能测试现如今Spring已经将Swagger纳入自身的标准,建立了Spring......