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