idea配置knife4j,并解决路径重复问题

本文介绍了在学习苍穹外卖课程时配置knife4j和遇到的问题,如版本更新导致的配置错误,以及访问接口时的重复admin路径。作者通过GitHub项目解决了knife4j配置,并发现是Nginx反向代理导致的访问问题。

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

在学习黑马课程苍穹外卖的时候,前期准备时需要用到yapi和knife4j这个管理使用接口文档。但是无意中看见弹幕中提到有apifox这个新东西,就下来使用了。

一、idea配置knife4j

由于现在各种东西都发展得很快,直接使用黑马给的资料很多已经不能正常运行了。如在配置类WebMvcConfiguration里面这一段报错,我就解决不了。

后面找到了github上的开源项目GitHub - Sonder-MX/sky-take-out: 苍穹外卖,发现和我版本差不多就clone下来使用了(如果你不想直接要全部代码,可以去我的github里使用初始代码:https://github.com/chenxiu9985/sky-take-out),里面使用knife4j依赖的是

        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
            <version>4.4.0</version>
        </dependency>

application.yml配置加上下面这里,

# knife4j配置
springdoc:
  swagger-ui:
    path: /swagger-ui.html
    tags-sorter: alpha
    operations-sorter: alpha
  api-docs:
    path: /v3/api-docs
  group-configs:
    - group: "default"
      paths-to-match: "/**"
      packages-to-scan: com.sky.controller 
  default-flat-param-object: true

knife4j:
  enable: true
  setting:
    language: zh_cn

然后在config目录下创建SwaggerConfig.java类

package com.sky.config;

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import org.springdoc.core.customizers.GlobalOpenApiCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.HashMap;
import java.util.Map;

/***
 * 创建Swagger配置
 */
@Configuration
public class SwaggerConfig {
    // TODO 待完善,不能正常使用
    /**
     * 根据@Tag 上的排序,写入x-order
     *
     * @return the global open api customizer
     */
    @Bean
    public GlobalOpenApiCustomizer orderGlobalOpenApiCustomizer() {
        return openApi -> {
            if (openApi.getTags() != null) {
                openApi.getTags().forEach(tag -> {
                    Map<String, Object> map = new HashMap<>();
                    map.put("x-order", tag.getName().length());
                    tag.setExtensions(map);
                });
            }
            if (openApi.getPaths() != null) {
                openApi.addExtension("x-test123", "333");
                openApi.getPaths().addExtension("x-abb", "333");
            }

        };
    }

    @Bean
    public OpenAPI customOpenAPI() {
        return new OpenAPI()
                .info(new Info()
                        .title("苍穹外卖接口文档")
                        .version("3.0")
                        .description("苍穹外卖项目接口文档"));
    }

}

启动,访问http://127.0.0.1:8080/doc.html,成功显示了!!

将上面的url导入apifox里面,完事。

二、访问接口失败,出现重复admin

如果按照上面一步一步来,然后你想测试一下login接口,你会发现:

但是你从接口文档那里却可以正常访问,就很奇怪,搜了一圈也没找到有用的信息。

后面我想着会不会nginx帮我加的这个admin,去找nginx.conf里面的反向代理部分,就破案了,删除admin/可以正常访问(需要重新启动nginx)。

ps:纯刚入门,有错误或写得不好的地方,欢迎大家指正!ヾ(≧▽≦*)o

### 在 IntelliJ IDEA 中集成和使用 Knife4j 为了在 IntelliJ IDEA 中成功集成使用 Knife4j,在项目中除了引入必要的依赖外,还需要正确配置 `application.properties` 或者 `application.yml` 文件。 对于基于 Spring Boot 的应用程序来说,可以在配置文件指定 Knife4j 特定选项来增强 API 文档的功能。例如: ```yaml # application.yml 示例 springdoc: swagger-ui: path: /swagger-ui.html tags-sorter: alpha operations-sorter: alpha api-docs: path: /v3/api-docs group-configs: - group: "default" paths-to-match: "/**" packages-to-scan: com.sky.controller default-flat-param-object: true knife4j: enable: true setting: language: zh_cn ``` 上述设置不仅启用了 Knife4j 功能[^3],还指定了 Swagger UI 页面的位置以及 API 接口分组方式等内容。这有助于更好地管理和展示不同模块下的接口信息。 当遇到诸如页面访问返回 404 错误等问题时,则可能是由于所使用的 Spring Boot 和 Knife4j 版本之间存在兼容性差异所致。特别是升级到 Spring Boot 3.x 后,应该配套选用 Knife4j 4.x 版本来确保正常工作[^2]。 另外需要注意的是,如果是在 Maven 项目环境下操作,可能还会面临一些构建方面的问题,比如项目无法编译等情况。此时应当检查 pom.xml 文件中的依赖项是否正确无误,确认本地环境已经安装了最新版的 JDK 及其他所需软件包[^4]。 最后提醒一点,完成以上所有配置之后记得重启 IDE 清理缓存以使更改生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值