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