springboot + swgger遇到的坑 - 通过网关聚合文档时请求地址‘/v2/api-docs‘发生空指针异常,但单独打开服务的接口确正常

本文讨论了在SpringBoot中使用Swagger时,接口文档聚合失败的案例,归因于参数命名不一致和特殊字符导致的空指针异常。解决策略在于检查接口参数设置的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

再springboot上使用swagger接口组件,并通过配置实现网关聚合文档时有个服务的文档打开失败,检查接口发现请求地址“/v2/api-docs”时该服务返回失败,程序报空指针异常,但单独打开该服务下的文档地址(如:
 )时确是正常的。

检查了各种配置,对比其他服务未发现异常。而通过网关聚合调用接口“/v2/api-docs”时报异常,最终通过断点跟踪发现所写的接口里参数设置不规范导致,如请求地址中的/path/{id} => func(@PathVariable("id") String dataId)这种写法,以及 ApiImplicitParam(name="name") 对应方法参数里的username等不统一的写法很可能会导致异常。

同样api注解里的参数说明包含特殊字符时也可能导致异常,如斜杠(/)。

多检查,除了配置问题外,一般是接口参数写法问题导致!

### 如何在Knife4j中配置Swagger2 为了使 Knife4j 和 Swagger2 能够协同工作,在 Spring Boot 项目中需要引入特定的依赖并进行相应的配置。 #### 添加必要的Maven依赖 保项目的 `pom.xml` 文件包含了以下依赖项: ```xml <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>${knife4j.version}</version> </dependency> ``` 这会自动处理大部分与 Swagger 相关的基础设置,使得开发者无需再单独引入其他 Swagger 的依赖[^1]。 #### 创建Swagger配置类 创建一个新的 Java 类用于定义 Swagger 文档的相关属性。下面是一个典型的例子: ```java import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; @Configuration @EnableKnife4j public class SwaggerConfig { @Bean(value = "defaultApi2") public Docket defaultApi2() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() // 这里指定Controller扫描包路径 .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("API文档标题") .description("更多描述...") .termsOfServiceUrl("") .contact(new Contact("联系人姓名", "", "")) .version("1.0") .build(); } } ``` 这段代码通过启用 `@EnableKnife4j` 注解来激活 Knife4j 功能,并设置了 API 接口的基本信息以及指定了要被纳入到 Swagger UI 中的接口范围[^2]。 #### 启动应用查看效果 完成上述配置之后重启应用程序,访问 `/doc.html` 地址即可看到由 Knife4j 增强后的 Swagger 用户界面。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值