一:簡介
Swagger 是一個規范和完整的框架,用于生成、描述、調用和可視化 RESTful 風格的 Web 服務??傮w目標是使客戶端和文件系統作為服務器以同樣的速度來更新。文件的方法,參數和模型緊密集成到服務器端的代碼,允許API來始終保持同步。Swagger 讓部署管理和使用功能強大的API從未如此簡單。
二:集成swagger
1.引入pom.xml文件包(導入4個jar包)
注意:jdk1.8以上才能運行swagger2
- <!--swagger-->
- <dependency>
- <groupId>io.springfox</groupId>
- <artifactId>springfox-swagger2</artifactId>
- <version>2.8.0</version>
- </dependency>
- <!--swagger-ui-->
- <dependency>
- <groupId>io.springfox</groupId>
- <artifactId>springfox-swagger-ui</artifactId>
- <version>2.8.0</version>
- </dependency>
- <!--swagger-ui增強-->
- <dependency>
- <groupId>com.github.xiaoymin</groupId>
- <artifactId>knife4j-spring-boot-starter</artifactId>
- <version>2.0.4</version>
- </dependency>
- <!--swagger-xml bind-->
- <dependency>
- <groupId>javax.xml.bind</groupId>
- <artifactId>jaxb-api</artifactId>
- <version>2.3.0</version>
- </dependency>
2.要想使用Swagger,必須編寫一個配置類來配置 Swagger,這里的配置類如下
- @Configuration
- @EnableSwagger2
- public class SwaggerConfig {
- private String title = "標題..";
- private String description = "";
- private String termsOfServiceUrl = "";
- private String version = "版本號..";
- @Bean
- public Docket createDefaultRestApi() {
- return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
- .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
- .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).paths(PathSelectors.any())
- .build().groupName("default").securitySchemes(securitySchemes()).securityContexts(securityContexts());
- }
- @Bean
- public Docket createTestRestApi() {
- return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
- .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
- .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
- .paths(PathSelectors.ant("/test/**")).build().groupName("測試/調試").securitySchemes(securitySchemes())
- .securityContexts(securityContexts());
- }
- private ApiInfo apiInfo() {
- return new ApiInfoBuilder().title(title).description(description).termsOfServiceUrl(termsOfServiceUrl)
- .version(version).build();
- }
- private List<SecurityReference> defaultAuth() {
- AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
- AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
- authorizationScopes[0] = authorizationScope;
- return newArrayList(new SecurityReference("token", authorizationScopes));
- }
- private List<SecurityContext> securityContexts() {
- return newArrayList(SecurityContext.builder().securityReferences(defaultAuth())
- .forPaths(PathSelectors.regex("^(?!auth).*$")).build());
- }
- private List<ApiKey> securitySchemes() {
- return newArrayList(new ApiKey("token", "token", "header"));
- }
- }
3.集成RESTful風格接口示例
- @Api(tags = "測試")
- @RestController
- public class TestController {
- @ApiOperation("get方法")
- @GetMapping("getInfo")
- public void getInfo(){
- }
- }
4.控制臺打印路徑地址(可選配置)
- @Slf4j
- @SpringBootApplication
- public class SpringbootApplication implements ApplicationRunner {
- public static void main(String[] args) {
- SpringApplication.run(SpringbootApplication.class, args);
- }
- @Autowired
- Environment environment;
- @Override
- public void run(ApplicationArguments args) throws Exception {
- log.info("項目已啟動,端口:" + environment.getProperty("local.server.port"));
- log.info("swagger文檔地址:http://localhost:" + environment.getProperty("local.server.port") + "/swagger-ui.html");
- log.info("swagger文檔地址:http://localhost:" + environment.getProperty("local.server.port") + "/doc.html");
- }
- }
三:配置運用swagger
1. http://ip:port/swagger-ui.html
2. http://ip:port/doc.html
到此這篇關于Java集成swagger文檔組件的文章就介紹到這了,更多相關Java集成swagger內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/guxiaohai_/article/details/117928391