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

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

在学习黑马课程苍穹外卖的时候,前期准备时需要用到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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值