一、簡介
Swaggerknife4j是一個基於swagger的API文檔生成工具,它能夠根據Java代碼生成RESTful API文檔,並提供一些額外的功能,例如在線調試和測試介面。它可以讓開發人員輕鬆地理解API,以及與API交互的方式。
Swaggerknife4j不僅提供了更好的文檔和測試介面功能,還針對swagger-ui做了一些優化,例如減少載入時間、增加搜索功能,並且它支持自定義錯誤響應和修改默認UI。
一般情況下,當使用swagger生成API文檔時,需要為每個API編寫注釋,並且將文檔與代碼保持同步。這使得文檔維護變得非常繁瑣,並且容易出現錯誤。而swaggerknife4j可以幫助您快速自動生成API文檔,並與代碼保持同步。
二、安裝和配置
安裝swaggerknife4j非常簡單,只需要在Maven POM文件中添加以下依賴項:
<dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>swagger-bootstrap-ui</artifactId> <version>1.9.9</version> </dependency>
默認情況下,swaggerknife4j使用的是swagger-ui 2.x版本,因此您還需要將以下的依賴項添加到您的Maven POM文件中:
<dependency> <groupId>org.webjars</groupId> <artifactId>swagger-ui</artifactId> <version>2.2.10</version> </dependency>
然後,您需要在你的SpringBoot項目中添加swagger2和swagger-ui的相關配置信息:
@Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.example.demo.controllers")) .paths(PathSelectors.any()) .build() .securitySchemes(Lists.newArrayList(apiKey())); } private ApiKey apiKey() { return new ApiKey("token", "token", "header"); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("Spring Boot API文檔") .description("API文檔") .version("1.0") .build(); } }
以上的代碼使用了演示的SpringBoot項目的controller包下的Restful API註解作為API的展示範例。
注意事項:
- 在createRestApi()方法中添加自己的API組名,或者更換具體項目的包下API
- 在apiKey方法中添加自定義參數以實現token,然後就可以在REST API中使用header參數token作為Authentication信息了。
三、使用說明
在完成安裝和配置之後,您可以訪問http://localhost:8080/swagger-ui.html來查看生成的API文檔。文檔會列出所有API,它們的參數和返回類型信息,以及如何在API調試界面中調用它們。
swaggerknife4j還提供了一些自定義配置選項,例如更改API的描述信息、設置API的默認響應、隱藏API、設置API訪問控制和設置全局響應headers。這些配置選項可以通過使用@ControllerAdvice或@GlobalResponseWrapper注釋來實現。
以下是一個使用@ControllerAdvice來設置全局響應headers的示例代碼:
@ControllerAdvice public class GlobalResponseHeaders { @ModelAttribute public void setHeaders(Model model) { model.addAttribute("responseHeaders", ImmutableMap.of( "X-Content-Type-Options", "nosniff", "X-Frame-Options", "DENY" )); } }
更多示例請參考swaggerknife4j的官方文檔。
四、樣式優化
你可以使用自定義Swagger主題來定製您的API文檔的外觀,並增加一些額外的功能。例如,在您的API文檔中添加標籤、增加搜索功能或者自定義生成的文檔的樣式。
下面是一個創建自定義Swagger主題的示例代碼:
@Configuration @EnableSwaggerBootstrapUI public class SwaggerBootstrapUiConfig { @Bean public SwaggerResourcesProvider swaggerResourcesProvider() { return new SwaggerBootstrapUiResourceProvider(); } @Bean public SwaggerBootstrapUiConfig swaggerBootstrapUiConfig() { return SwaggerBootstrapUiConfigBuilder.builder() .title("API文檔") .description("API文檔") .version("1.0") .build(); } }
以上代碼中使用了SwaggerBootstrapUiConfigBuilder,SwaggerBootstrapUiResourceProvider和SwaggerBootstrapUiConfig等類,來設置生成文檔的樣式。
更多示例請參考swaggerknife4j的官方文檔。
五、總結
Swaggerknife4j是一個非常優秀的基於swagger的API文檔生成工具,它不僅提供了更好的文檔和測試介面,而且在swagger-ui上做了很多優化並支持自定義配置選項。同時,它也可以幫助開發人員減輕文檔維護的負擔,並與代碼保持同步。因此,對於需要自動生成API文檔的開發人員來說,swaggerknife4j是一個非常不錯的選擇。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/151385.html