From 53d5ab2000e11cafe5769637a61425cfbd565f69 Mon Sep 17 00:00:00 2001 From: liuxiaobu666 <3671798389@qq.com> Date: Mon, 4 Nov 2024 19:30:38 +0800 Subject: [PATCH] addSwagger --- back/pom.xml | 13 ++++ .../com/heeexy/example/MyApplication.java | 2 + .../example/config/swagger/SwaggerConfig.java | 62 +++++++++++++++++++ .../example/controller/ArticleController.java | 2 + .../example/controller/LoginController.java | 2 + back/src/main/resources/application.yml | 1 + 6 files changed, 82 insertions(+) create mode 100644 back/src/main/java/com/heeexy/example/config/swagger/SwaggerConfig.java diff --git a/back/pom.xml b/back/pom.xml index cdeff49..99a6cb4 100644 --- a/back/pom.xml +++ b/back/pom.xml @@ -73,6 +73,19 @@ 1.18.20 provided + + + + io.springfox + springfox-swagger2 + 2.9.2 + + + io.springfox + springfox-swagger-ui + 2.9.2 + + diff --git a/back/src/main/java/com/heeexy/example/MyApplication.java b/back/src/main/java/com/heeexy/example/MyApplication.java index d6b2573..9827943 100644 --- a/back/src/main/java/com/heeexy/example/MyApplication.java +++ b/back/src/main/java/com/heeexy/example/MyApplication.java @@ -6,12 +6,14 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; +import springfox.documentation.swagger2.annotations.EnableSwagger2; /** * @author: heeexy * @description: SpringBoot启动类 * @date: 2017/10/24 11:55 */ +@EnableSwagger2 @SpringBootApplication @MapperScan("com.heeexy.example.dao") public class MyApplication extends SpringBootServletInitializer { diff --git a/back/src/main/java/com/heeexy/example/config/swagger/SwaggerConfig.java b/back/src/main/java/com/heeexy/example/config/swagger/SwaggerConfig.java new file mode 100644 index 0000000..283c9a2 --- /dev/null +++ b/back/src/main/java/com/heeexy/example/config/swagger/SwaggerConfig.java @@ -0,0 +1,62 @@ +package com.heeexy.example.config.swagger; + + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.Contact; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + + +@Configuration // 标明是配置类 +@EnableSwagger2 //开启swagger功能 +public class SwaggerConfig { + @Bean + public Docket createRestApi() { + return new Docket(DocumentationType.SWAGGER_2) // DocumentationType.SWAGGER_2 固定的,代表swagger2 + //.groupName("分布式任务系统") // 如果配置多个文档的时候,那么需要配置groupName来分组标识 + .apiInfo(apiInfo()) // 用于生成API信息 + .select() // select()函数返回一个ApiSelectorBuilder实例,用来控制接口被swagger做成文档 + // 扫描指定包下的接口,最为常用 + .apis(RequestHandlerSelectors.basePackage("com.heeexy.example")) + //.withClassAnnotation(RestController.class) // 扫描带有指定注解的类下所有接口 + //.withMethodAnnotation(PostMapping.class) // 扫描带有指定注解的方法接口 + //.apis(RequestHandlerSelectors.any()) // 扫描所有 + + // 选择所有的API,如果你想只为部分API生成文档,可以配置这里 + .paths(PathSelectors.any() + //.any() // 满足条件的路径,该断言总为true + //.none() // 不满足条件的路径,该断言总为false(可用于生成环境屏蔽 swagger) + //.ant("/user/**") // 满足字符串表达式路径 + //.regex("") // 符合正则的路径 + ) + .build(); + } + + /** + * 用于定义API主界面的信息,比如可以声明所有的API的总标题、描述、版本 + * @return + */ + private ApiInfo apiInfo() { + + Contact contact = new Contact( + "我是作者刘朝阳", // 作者姓名 + "https://blog.csdn.net/", // 作者网址 + "123456789@163.com"); // 作者邮箱 + + return new ApiInfoBuilder() + .title("springboot-shiro-vue项目API") // 可以用来自定义API的主标题 + .description("项目SwaggerAPI管理") // 可以用来描述整体的API + .termsOfServiceUrl("https://www.baidu.com") // 用于定义服务的域名(跳转链接) + .version("1.0") // 可以用来定义版本 + .license("Swagger-的使用教程") + .licenseUrl("https://blog.csdn.net") + .contact(contact) + .build(); // + } +} diff --git a/back/src/main/java/com/heeexy/example/controller/ArticleController.java b/back/src/main/java/com/heeexy/example/controller/ArticleController.java index a95b2c8..c8e20ce 100644 --- a/back/src/main/java/com/heeexy/example/controller/ArticleController.java +++ b/back/src/main/java/com/heeexy/example/controller/ArticleController.java @@ -4,6 +4,7 @@ import com.heeexy.example.config.annotation.RequiresPermissions; import com.heeexy.example.service.ArticleService; import com.heeexy.example.util.CommonUtil; +import io.swagger.annotations.Api; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -16,6 +17,7 @@ */ @RestController @RequestMapping("/article") +@Api(value = "用户接口", tags = {"用户接口"}) public class ArticleController { @Autowired diff --git a/back/src/main/java/com/heeexy/example/controller/LoginController.java b/back/src/main/java/com/heeexy/example/controller/LoginController.java index 9f54746..251972f 100644 --- a/back/src/main/java/com/heeexy/example/controller/LoginController.java +++ b/back/src/main/java/com/heeexy/example/controller/LoginController.java @@ -3,6 +3,7 @@ import com.alibaba.fastjson.JSONObject; import com.heeexy.example.service.LoginService; import com.heeexy.example.util.CommonUtil; +import io.swagger.annotations.Api; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -16,6 +17,7 @@ */ @RestController @RequestMapping("/login") +@Api(value = "登录接口", tags = {"登录接口"}) public class LoginController { @Autowired diff --git a/back/src/main/resources/application.yml b/back/src/main/resources/application.yml index 1d4a821..bdd7a86 100644 --- a/back/src/main/resources/application.yml +++ b/back/src/main/resources/application.yml @@ -1,5 +1,6 @@ spring: profiles: active: local + mybatis: mapperLocations: classpath:/mapper/*.xml