在前后端大行其道的時(shí)代,項(xiàng)目不引入swagger都o(jì)ut了?;艘幌挛绨裺wagger集成到項(xiàng)目中,并定義了接口信息,然而UI界面看著很不爽,看著一定都不專業(yè)。

api接口文檔.png
knife4j
knife4j是springfox-swagger的增強(qiáng)UI實(shí)現(xiàn),為Java開發(fā)者在使用Swagger的時(shí)候,能擁有一份簡潔、強(qiáng)大的接口文檔體驗(yàn)。
簡書瀏覽時(shí)看到一大牛介紹knife4j,覺得效果不錯(cuò),決定把項(xiàng)目升級(jí)到knife4j。
首先引入POM:
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.1</version>
<exclusions>
<exclusion>
<groupId>io.springfox</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>io.swagger</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
這里排除io.springfox和io.swagger兩個(gè)包主要時(shí)為了防止jar包依賴沖突,前面已經(jīng)引用了swagger-starter。
然后修改配置:
@EnableSwagger2
public class SwaggerConfig implements WebMvcConfigurer {
// ... 這里省略 swagger api 基礎(chǔ)配置信息
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
可以看到修改配置的主要目的時(shí)添加新的靜態(tài)資源,保證springmvc會(huì)到指定資源目錄加載knife4j 的前端資源文件。
最后將新增加的資源路徑配置為可匿名訪問,這里使用的是shiro安全框架,具體配置如下:
chain.put("/doc.html", "anon");
chain.put("/swagger-ui.html", "anon");
最后驗(yàn)證下效果:

knife4j接口文檔.png
雖然有點(diǎn)簡單,但還是有點(diǎn)小成就。
坑
- 在測試時(shí),knife4j測試結(jié)果不更新
- 使用代理時(shí)最近了一級(jí)目錄,首頁地址正常,但是測試接口不能自動(dòng)追加。