Can't read swagger JSON from http://localhost:8080/v2/api-docs?group=移动端接口文档

当groupName设置为中文时,尝试从http://localhost:8080/v2/api-docs?group=移动端接口文档读取Swagger JSON会失败。解决方案包括将groupName改为英文或者设置Tomcat的URIEncoding为UTF-8。

出现以上原因是因为groupName设置了中文

1、将标红色的值改为英文就好了

return  new Docket(DocumentationType.SWAGGER_2)
        .apiInfo(apiInfo)//调用apiInfo方法,创建一个ApiInfo实例,里面是展示在文档页面信息内容
        .groupName("app_interface")//移动端接口文档
        .select()
        .apis(RequestHandlerSelectors.basePackage("com.tbs.demo2.controller.api"))//指定controller存放的接口路径
        .paths(PathSelectors.regex("/api/.*"))//设置访问路径
        .build();

2、设置tomcat的URIEncoding=UTF-8

@Bean
public TomcatEmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory() {
   TomcatEmbeddedServletContainerFactory tomcat=new TomcatEmbeddedServletContainerFactory();
   tomcat.setUriEncoding(Charset.forName("UTF-8"));
   tomcat.setPort(8001);
   return tomcat;
}


### Knife4j V3 API-Docs 请求返回 404 的解决方案 #### 初步分析 当使用 Knife4j 调试微服务接口时,如果遇到 `404 Not Found` 错误,通常是因为 Knife4j 尝试访问的路径不存在。这可能是由于配置不当或版本兼容性问题引起的[^2]。 #### 解决方案概述 针对 Knife4j 版本 3.0+ 和 Spring Boot 应用程序中的 basePath 处理不一致的问题,可以通过调整网关和服务提供者的 Swagger 文档生成方式来修复这个问题。具体措施如下: #### 修改 Gateway 中的 Swagger 配置 为了让 Knife4j 正确识别各子系统的 API 接口,在网关层面上需要做适当修改以确保所有请求都能带上正确的 base path 参数。对于 OpenAPI 3.x 规范而言,不再支持 basePath 字段,所以应当通过其他手段传递该信息给前端展示工具。 ```java @Bean public RouteLocator customRouteLocator(RouteLocatorBuilder builder) { return builder.routes() .route(r -> r.path("/api/**") // 自定义路由规则匹配实际业务模块地址 .filters(f -> f.rewritePath( "/api/(?<segment>.*)", // 使用正则表达式捕获分组 "/${service.name}/$\\{segment}" // 动态拼接目标服务名称作为新的基础路径 )) .uri("lb://${service.name}") // 指向负载均衡后的内部服务实例 .id("${service.name}-gateway")) // 设置唯一ID用于区分不同路由规则 .build(); } ``` 上述代码片段展示了如何利用 Spring Cloud Gateway 提供的功能重写 URL 地址,从而使得每个进入网关的服务调用都带有特定的基础路径前缀。 #### 更新 Service Provider 的 Swagger 配置 除了在网关层面做出相应改动外,还需要确保各个独立部署的服务也能够正常暴露其自身的 API 描述文件。为此可以在这些应用里加入额外设置以便更好地配合新版 Knife4j 工具工作。 ```yaml springdoc: swagger-ui: url: /v3/api-docs # 如果是OpenAPI 3.x,则指定此URL指向对应的json/yaml资源位置 server: servlet: context-path: /your-service-name # 定义当前应用程序上下文根目录 ``` 以上 YAML 文件节选说明了怎样通过 springdoc-openapi UI 组件定制化参数让本地运行的应用暴露出符合预期格式的数据结构[^3]。 #### 进一步优化建议 考虑到未来可能存在的升级需求以及跨团队协作效率等因素,推荐定期关注官方文档和技术社区动态,及时获取最新实践指南并适时更新现有系统架构设计思路。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值