diff --git a/common-tools/pom.xml b/common-tools/pom.xml
index cd711f8..6618144 100644
--- a/common-tools/pom.xml
+++ b/common-tools/pom.xml
@@ -25,12 +25,19 @@
cn.hutool
hutool-all
+
com.google.guava
guava
+ io.swagger.core.v3
+ swagger-annotations-jakarta
+ 2.2.2
+
+
+
org.projectlombok
lombok
true
diff --git a/common-tools/src/main/java/com/xkcoding/common/model/viewmodel/Response.java b/common-tools/src/main/java/com/xkcoding/common/model/viewmodel/Response.java
index 66e9c8c..5641564 100644
--- a/common-tools/src/main/java/com/xkcoding/common/model/viewmodel/Response.java
+++ b/common-tools/src/main/java/com/xkcoding/common/model/viewmodel/Response.java
@@ -3,6 +3,7 @@ package com.xkcoding.common.model.viewmodel;
import com.xkcoding.common.enums.CommonStatus;
import com.xkcoding.common.enums.base.IStatus;
import com.xkcoding.common.exception.CommonBizException;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@@ -14,20 +15,24 @@ import java.io.Serializable;
* @date 2022-08-20 01:43
*/
@Data
+@Schema(name = "Response", title = "通用PI接口返回", description = "Common Api Response")
public class Response implements Serializable {
/**
* 状态码
*/
+ @Schema(title = "状态码", required = true)
private Integer code;
/**
* 返回内容
*/
+ @Schema(title = "返回内容", required = true)
private String message;
/**
* 返回数据
*/
+ @Schema(title = "返回数据", required = false)
private T data;
private Response() {
diff --git a/demo-apidoc/demo-apidoc-springdoc/README.md b/demo-apidoc/demo-apidoc-springdoc/README.md
new file mode 100644
index 0000000..95047b1
--- /dev/null
+++ b/demo-apidoc/demo-apidoc-springdoc/README.md
@@ -0,0 +1,179 @@
+## spring-boot-demo-springdoc
+
+> 此 demo 主要演示了 Spring Boot 如何通过 Springdoc 集成 swagger
+
+### 1.开发步骤
+#### 1.1.添加依赖
+
+> 3.0.0-M4 依赖的 servlet 为 jakarta,目前 release 的 Springdoc 依赖的是 javax.servlet-api,需要同时使用最新的 2.0.0-M5
+
+```xml
+
+
+ com.xkcoding
+ common-tools
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
+ ${springdoc.version}
+
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+```
+
+#### 1.2.编写测试接口
+
+```java
+@Slf4j
+@RestController
+@RequestMapping("/user")
+@Tag(name = "用户管理", description = "用户管理")
+public class UserController {
+ @GetMapping
+ @Operation(summary = "条件查询(DONE)", description = "备注")
+ @Parameters({
+ @Parameter(name = "username", description = "用户名", in = ParameterIn.QUERY, schema = @Schema(implementation = String.class), required = true)
+ })
+ public Response getByUserName(String username) {
+ log.info("多个参数用 @Parameters");
+ return Response.ofSuccess(new User(1, username, "JAVA"));
+ }
+
+ @GetMapping("/{id}")
+ @Operation(summary = "主键查询(DONE)", description = "备注")
+ @Parameters({
+ @Parameter(name = "id", description = "用户编号", in = ParameterIn.PATH, schema = @Schema(implementation = Integer.class), required = true)
+ })
+ public Response get(@PathVariable Integer id) {
+ log.info("单个参数用 @Parameter");
+ return Response.ofSuccess(new User(id, "u1", "p1"));
+ }
+
+ @DeleteMapping("/{id}")
+ @Operation(summary = "删除用户(DONE)", description = "备注")
+ @Parameter(name = "id", description = "用户编号", in = ParameterIn.PATH, schema = @Schema(implementation = Integer.class), required = true)
+ public void delete(@PathVariable Integer id) {
+ log.info("单个参数用 Parameter");
+ }
+
+ @PostMapping
+ @Operation(summary = "添加用户(DONE)")
+ public User post(@RequestBody User user) {
+ log.info("如果是 POST PUT 这种带 @RequestBody 的可以不用写 @Parameter");
+ return user;
+ }
+
+ @PostMapping("/multipar")
+ @Operation(summary = "添加用户(DONE)")
+ public List multipar(@RequestBody List user) {
+ log.info("如果是 POST PUT 这种带 @RequestBody 的可以不用写 @Parameter");
+ return user;
+ }
+
+ @PostMapping("/array")
+ @Operation(summary = "添加用户(DONE)")
+ public User[] array(@RequestBody User[] user) {
+ log.info("如果是 POST PUT 这种带 @RequestBody 的可以不用写 @Parameter");
+ return user;
+ }
+
+ @PutMapping("/{id}")
+ @Operation(summary = "修改用户(DONE)")
+ public void put(@PathVariable Long id, @RequestBody User user) {
+ log.info("如果你不想写 @Parameter 那么 swagger 也会使用默认的参数名作为描述信息 ");
+ }
+
+ @PostMapping("/{id}/file")
+ @Operation(summary = "文件上传(DONE)")
+ public String file(@PathVariable Long id, @RequestParam("file") MultipartFile file) {
+ log.info(file.getContentType());
+ log.info(file.getName());
+ log.info(file.getOriginalFilename());
+ return file.getOriginalFilename();
+ }
+}
+
+```
+
+#### 1.3.编写返回对象
+
+```java
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "User", title = "用户实体", description = "User Entity")
+public class User implements Serializable {
+ @Serial
+ private static final long serialVersionUID = 5057954049311281252L;
+ /**
+ * 主键id
+ */
+ @Schema(title = "主键id", required = true)
+ private Integer id;
+ /**
+ * 用户名
+ */
+ @Schema(title = "用户名", required = true)
+ private String name;
+ /**
+ * 工作岗位
+ */
+ @Schema(title = "工作岗位", required = true)
+ private String job;
+}
+```
+
+#### 1.4.配置 Springdoc
+
+- **SpringdocAutoConfiguration**
+
+```java
+@Configuration(proxyBeanMethods = false)
+@OpenAPIDefinition(info = @Info(title = "spring-boot-demo-apidoc-swagger", version = "1.0.0-SNAPSHOT", description = "这是一个简单的 Swagger API 演示", contact = @Contact(name = "Yangkai.Shen", url = "https://xkcoding.com", email = "237497819@qq.com")),
+ externalDocs = @ExternalDocumentation(description = "springdoc官方文档", url = "https://springdoc.org/"),
+ servers = @Server(url = "http://localhost:8080/demo")
+)
+public class SpringdocAutoConfiguration implements WebMvcConfigurer {
+
+}
+```
+
+- **application.yml**
+
+```yaml
+server:
+ port: 8080
+ servlet:
+ context-path: /demo
+springdoc:
+ swagger-ui:
+ path: /swagger-ui.html
+ packages-to-scan: com.xkcoding.swagger.controller
+```
+
+### 2.测试
+
+启动项目,访问地址:http://localhost:8080/demo/swagger-ui/index.html
+
+### 3.参考
+
+- [Springdoc 官方文档](https://springdoc.org/)
+- [Springfox 迁移到 Springdoc 步骤](https://springdoc.org/#migrating-from-springfox)
diff --git a/demo-apidoc/demo-apidoc-springdoc/pom.xml b/demo-apidoc/demo-apidoc-springdoc/pom.xml
new file mode 100644
index 0000000..0e3fca5
--- /dev/null
+++ b/demo-apidoc/demo-apidoc-springdoc/pom.xml
@@ -0,0 +1,65 @@
+
+
+
+ com.xkcoding
+ demo-apidoc
+ 1.0.0-SNAPSHOT
+
+
+ 4.0.0
+
+ demo-apidoc-springdoc
+ 1.0.0-SNAPSHOT
+ jar
+
+ demo-apidoc-springdoc
+ Demo project for Spring Boot
+
+
+ 17
+
+ 2.0.0-M5
+
+
+
+
+ com.xkcoding
+ common-tools
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
+ ${springdoc.version}
+
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+
+
+ demo-apidoc-springdoc
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
diff --git a/demo-apidoc/demo-apidoc-swagger/src/main/java/com/xkcoding/swagger/SpringBootDemoSwaggerApplication.java b/demo-apidoc/demo-apidoc-springdoc/src/main/java/com/xkcoding/springdoc/SpringdocApplication.java
similarity index 57%
rename from demo-apidoc/demo-apidoc-swagger/src/main/java/com/xkcoding/swagger/SpringBootDemoSwaggerApplication.java
rename to demo-apidoc/demo-apidoc-springdoc/src/main/java/com/xkcoding/springdoc/SpringdocApplication.java
index 1f9dbae..50e355c 100644
--- a/demo-apidoc/demo-apidoc-swagger/src/main/java/com/xkcoding/swagger/SpringBootDemoSwaggerApplication.java
+++ b/demo-apidoc/demo-apidoc-springdoc/src/main/java/com/xkcoding/springdoc/SpringdocApplication.java
@@ -1,4 +1,4 @@
-package com.xkcoding.swagger;
+package com.xkcoding.springdoc;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -9,12 +9,12 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
*
*
* @author yangkai.shen
- * @date Created in 2018-11-29 13:25
+ * @date Created in 2022-09-06 17:04
*/
@SpringBootApplication
-public class SpringBootDemoSwaggerApplication {
+public class SpringdocApplication {
public static void main(String[] args) {
- SpringApplication.run(SpringBootDemoSwaggerApplication.class, args);
+ SpringApplication.run(SpringdocApplication.class, args);
}
}
diff --git a/demo-apidoc/demo-apidoc-springdoc/src/main/java/com/xkcoding/springdoc/config/SpringdocAutoConfiguration.java b/demo-apidoc/demo-apidoc-springdoc/src/main/java/com/xkcoding/springdoc/config/SpringdocAutoConfiguration.java
new file mode 100644
index 0000000..b4c1022
--- /dev/null
+++ b/demo-apidoc/demo-apidoc-springdoc/src/main/java/com/xkcoding/springdoc/config/SpringdocAutoConfiguration.java
@@ -0,0 +1,26 @@
+package com.xkcoding.springdoc.config;
+
+import io.swagger.v3.oas.annotations.ExternalDocumentation;
+import io.swagger.v3.oas.annotations.OpenAPIDefinition;
+import io.swagger.v3.oas.annotations.info.Contact;
+import io.swagger.v3.oas.annotations.info.Info;
+import io.swagger.v3.oas.annotations.servers.Server;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ *
+ * Springdoc 基础配置
+ *
+ *
+ * @author yangkai.shen
+ * @date Created in 2022-09-06 22:37
+ */
+@Configuration(proxyBeanMethods = false)
+@OpenAPIDefinition(info = @Info(title = "spring-boot-demo-apidoc-swagger", version = "1.0.0-SNAPSHOT", description = "这是一个简单的 Swagger API 演示", contact = @Contact(name = "Yangkai.Shen", url = "https://xkcoding.com", email = "237497819@qq.com")),
+ externalDocs = @ExternalDocumentation(description = "springdoc官方文档", url = "https://springdoc.org/"),
+ servers = @Server(url = "http://localhost:8080/demo")
+)
+public class SpringdocAutoConfiguration implements WebMvcConfigurer {
+
+}
diff --git a/demo-apidoc/demo-apidoc-springdoc/src/main/java/com/xkcoding/springdoc/controller/UserController.java b/demo-apidoc/demo-apidoc-springdoc/src/main/java/com/xkcoding/springdoc/controller/UserController.java
new file mode 100644
index 0000000..96660c2
--- /dev/null
+++ b/demo-apidoc/demo-apidoc-springdoc/src/main/java/com/xkcoding/springdoc/controller/UserController.java
@@ -0,0 +1,90 @@
+package com.xkcoding.springdoc.controller;
+
+import com.xkcoding.common.model.viewmodel.Response;
+import com.xkcoding.springdoc.entity.User;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Parameters;
+import io.swagger.v3.oas.annotations.enums.ParameterIn;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+/**
+ * 测试接口
+ *
+ * @author 一珩(沈扬凯 yk.shen@tuya.com)
+ * @date 2022-09-06 22:36
+ */
+@Slf4j
+@RestController
+@RequestMapping("/user")
+@Tag(name = "用户管理", description = "用户管理")
+public class UserController {
+ @GetMapping
+ @Operation(summary = "条件查询(DONE)", description = "备注")
+ @Parameters({
+ @Parameter(name = "username", description = "用户名", in = ParameterIn.QUERY, schema = @Schema(implementation = String.class), required = true)
+ })
+ public Response getByUserName(String username) {
+ log.info("多个参数用 @Parameters");
+ return Response.ofSuccess(new User(1, username, "JAVA"));
+ }
+
+ @GetMapping("/{id}")
+ @Operation(summary = "主键查询(DONE)", description = "备注")
+ @Parameters({
+ @Parameter(name = "id", description = "用户编号", in = ParameterIn.PATH, schema = @Schema(implementation = Integer.class), required = true)
+ })
+ public Response get(@PathVariable Integer id) {
+ log.info("单个参数用 @Parameter");
+ return Response.ofSuccess(new User(id, "u1", "p1"));
+ }
+
+ @DeleteMapping("/{id}")
+ @Operation(summary = "删除用户(DONE)", description = "备注")
+ @Parameter(name = "id", description = "用户编号", in = ParameterIn.PATH, schema = @Schema(implementation = Integer.class), required = true)
+ public void delete(@PathVariable Integer id) {
+ log.info("单个参数用 Parameter");
+ }
+
+ @PostMapping
+ @Operation(summary = "添加用户(DONE)")
+ public User post(@RequestBody User user) {
+ log.info("如果是 POST PUT 这种带 @RequestBody 的可以不用写 @Parameter");
+ return user;
+ }
+
+ @PostMapping("/multipar")
+ @Operation(summary = "添加用户(DONE)")
+ public List multipar(@RequestBody List user) {
+ log.info("如果是 POST PUT 这种带 @RequestBody 的可以不用写 @Parameter");
+ return user;
+ }
+
+ @PostMapping("/array")
+ @Operation(summary = "添加用户(DONE)")
+ public User[] array(@RequestBody User[] user) {
+ log.info("如果是 POST PUT 这种带 @RequestBody 的可以不用写 @Parameter");
+ return user;
+ }
+
+ @PutMapping("/{id}")
+ @Operation(summary = "修改用户(DONE)")
+ public void put(@PathVariable Long id, @RequestBody User user) {
+ log.info("如果你不想写 @Parameter 那么 swagger 也会使用默认的参数名作为描述信息 ");
+ }
+
+ @PostMapping("/{id}/file")
+ @Operation(summary = "文件上传(DONE)")
+ public String file(@PathVariable Long id, @RequestParam("file") MultipartFile file) {
+ log.info(file.getContentType());
+ log.info(file.getName());
+ log.info(file.getOriginalFilename());
+ return file.getOriginalFilename();
+ }
+}
diff --git a/demo-apidoc/demo-apidoc-swagger/src/main/java/com/xkcoding/swagger/entity/User.java b/demo-apidoc/demo-apidoc-springdoc/src/main/java/com/xkcoding/springdoc/entity/User.java
similarity index 54%
rename from demo-apidoc/demo-apidoc-swagger/src/main/java/com/xkcoding/swagger/entity/User.java
rename to demo-apidoc/demo-apidoc-springdoc/src/main/java/com/xkcoding/springdoc/entity/User.java
index a89baea..ec45f8a 100644
--- a/demo-apidoc/demo-apidoc-swagger/src/main/java/com/xkcoding/swagger/entity/User.java
+++ b/demo-apidoc/demo-apidoc-springdoc/src/main/java/com/xkcoding/springdoc/entity/User.java
@@ -1,40 +1,41 @@
-package com.xkcoding.swagger.entity;
+package com.xkcoding.springdoc.entity;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
+import java.io.Serial;
import java.io.Serializable;
/**
*
- * 用户实体
+ * 测试用户
*
*
* @author yangkai.shen
- * @date Created in 2018-11-29 11:31
+ * @date Created in 2022-09-06 22:37
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
-@ApiModel(value = "用户实体", description = "User Entity")
+@Schema(name = "User", title = "用户实体", description = "User Entity")
public class User implements Serializable {
+ @Serial
private static final long serialVersionUID = 5057954049311281252L;
/**
* 主键id
*/
- @ApiModelProperty(value = "主键id", required = true)
+ @Schema(title = "主键id", required = true)
private Integer id;
/**
* 用户名
*/
- @ApiModelProperty(value = "用户名", required = true)
+ @Schema(title = "用户名", required = true)
private String name;
/**
* 工作岗位
*/
- @ApiModelProperty(value = "工作岗位", required = true)
+ @Schema(title = "工作岗位", required = true)
private String job;
}
diff --git a/demo-apidoc/demo-apidoc-springdoc/src/main/resources/application.yml b/demo-apidoc/demo-apidoc-springdoc/src/main/resources/application.yml
new file mode 100644
index 0000000..c897855
--- /dev/null
+++ b/demo-apidoc/demo-apidoc-springdoc/src/main/resources/application.yml
@@ -0,0 +1,8 @@
+server:
+ port: 8080
+ servlet:
+ context-path: /demo
+springdoc:
+ swagger-ui:
+ path: /swagger-ui.html
+ packages-to-scan: com.xkcoding.swagger.controller
diff --git a/demo-apidoc/demo-apidoc-springdoc/src/test/java/com/xkcoding/springdoc/SpringdocApplicationTests.java b/demo-apidoc/demo-apidoc-springdoc/src/test/java/com/xkcoding/springdoc/SpringdocApplicationTests.java
new file mode 100644
index 0000000..b906bf2
--- /dev/null
+++ b/demo-apidoc/demo-apidoc-springdoc/src/test/java/com/xkcoding/springdoc/SpringdocApplicationTests.java
@@ -0,0 +1,13 @@
+package com.xkcoding.springdoc;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class SpringdocApplicationTests {
+
+ @Test
+ void contextLoads() {
+ }
+
+}
diff --git a/demo-apidoc/demo-apidoc-swagger-beauty/.gitignore b/demo-apidoc/demo-apidoc-swagger-beauty/.gitignore
deleted file mode 100644
index 82eca33..0000000
--- a/demo-apidoc/demo-apidoc-swagger-beauty/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-/target/
-!.mvn/wrapper/maven-wrapper.jar
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/build/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
\ No newline at end of file
diff --git a/demo-apidoc/demo-apidoc-swagger-beauty/README.md b/demo-apidoc/demo-apidoc-swagger-beauty/README.md
deleted file mode 100644
index b488af5..0000000
--- a/demo-apidoc/demo-apidoc-swagger-beauty/README.md
+++ /dev/null
@@ -1,282 +0,0 @@
-# spring-boot-demo-swagger-beauty
-
-> 此 demo 主要演示如何集成第三方的 swagger 来替换原生的 swagger,美化文档样式。本 demo 使用 [swagger-spring-boot-starter](https://github.com/battcn/swagger-spring-boot) 集成。
->
-> 启动项目,访问地址:http://localhost:8080/demo/swagger-ui.html#/
->
-> 用户名:xkcoding
->
-> 密码:123456
-
-## pom.xml
-
-```xml
-
-
- 4.0.0
-
- spring-boot-demo-swagger-beauty
- 1.0.0-SNAPSHOT
- jar
-
- spring-boot-demo-swagger-beauty
- Demo project for Spring Boot
-
-
- com.xkcoding
- spring-boot-demo
- 1.0.0-SNAPSHOT
-
-
-
- UTF-8
- UTF-8
- 1.8
- 2.1.2-RELEASE
-
-
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
-
- com.battcn
- swagger-spring-boot-starter
- ${battcn.swagger.version}
-
-
-
- org.projectlombok
- lombok
- true
-
-
-
-
- spring-boot-demo-swagger-beauty
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
-
-
-```
-
-## application.yml
-
-```yaml
-server:
- port: 8080
- servlet:
- context-path: /demo
-spring:
- swagger:
- enabled: true
- title: spring-boot-demo
- description: 这是一个简单的 Swagger API 演示
- version: 1.0.0-SNAPSHOT
- contact:
- name: Yangkai.Shen
- email: 237497819@qq.com
- url: http://xkcoding.com
- # swagger扫描的基础包,默认:全扫描
- # base-package:
- # 需要处理的基础URL规则,默认:/**
- # base-path:
- # 需要排除的URL规则,默认:空
- # exclude-path:
- security:
- # 是否启用 swagger 登录验证
- filter-plugin: true
- username: xkcoding
- password: 123456
- global-response-messages:
- GET[0]:
- code: 400
- message: Bad Request,一般为请求参数不对
- GET[1]:
- code: 404
- message: NOT FOUND,一般为请求路径不对
- GET[2]:
- code: 500
- message: ERROR,一般为程序内部错误
- POST[0]:
- code: 400
- message: Bad Request,一般为请求参数不对
- POST[1]:
- code: 404
- message: NOT FOUND,一般为请求路径不对
- POST[2]:
- code: 500
- message: ERROR,一般为程序内部错误
-```
-
-## ApiResponse.java
-
-```java
-/**
- *
- * 通用API接口返回
- *
- *
- * @author yangkai.shen
- * @date Created in 2018-11-28 14:18
- */
-@Data
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-@ApiModel(value = "通用PI接口返回", description = "Common Api Response")
-public class ApiResponse implements Serializable {
- private static final long serialVersionUID = -8987146499044811408L;
- /**
- * 通用返回状态
- */
- @ApiModelProperty(value = "通用返回状态", required = true)
- private Integer code;
- /**
- * 通用返回信息
- */
- @ApiModelProperty(value = "通用返回信息", required = true)
- private String message;
- /**
- * 通用返回数据
- */
- @ApiModelProperty(value = "通用返回数据", required = true)
- private T data;
-}
-```
-
-## User.java
-
-```java
-/**
- *
- * 用户实体
- *
- *
- * @author yangkai.shen
- * @date Created in 2018-11-28 14:13
- */
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-@ApiModel(value = "用户实体", description = "User Entity")
-public class User implements Serializable {
- private static final long serialVersionUID = 5057954049311281252L;
- /**
- * 主键id
- */
- @ApiModelProperty(value = "主键id", required = true)
- private Integer id;
- /**
- * 用户名
- */
- @ApiModelProperty(value = "用户名", required = true)
- private String name;
- /**
- * 工作岗位
- */
- @ApiModelProperty(value = "工作岗位", required = true)
- private String job;
-}
-```
-
-## UserController.java
-
-```java
-/**
- *
- * User Controller
- *
- *
- * @author yangkai.shen
- * @date Created in 2018-11-28 14:25
- */
-@RestController
-@RequestMapping("/user")
-@Api(tags = "1.0.0-SNAPSHOT", description = "用户管理", value = "用户管理")
-@Slf4j
-public class UserController {
- @GetMapping
- @ApiOperation(value = "条件查询(DONE)", notes = "备注")
- @ApiImplicitParams({@ApiImplicitParam(name = "username", value = "用户名", dataType = DataType.STRING, paramType = ParamType.QUERY, defaultValue = "xxx")})
- public ApiResponse getByUserName(String username) {
- log.info("多个参数用 @ApiImplicitParams");
- return ApiResponse.builder().code(200).message("操作成功").data(new User(1, username, "JAVA")).build();
- }
-
- @GetMapping("/{id}")
- @ApiOperation(value = "主键查询(DONE)", notes = "备注")
- @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "用户编号", dataType = DataType.INT, paramType = ParamType.PATH)})
- public ApiResponse get(@PathVariable Integer id) {
- log.info("单个参数用 @ApiImplicitParam");
- return ApiResponse.builder().code(200).message("操作成功").data(new User(id, "u1", "p1")).build();
- }
-
- @DeleteMapping("/{id}")
- @ApiOperation(value = "删除用户(DONE)", notes = "备注")
- @ApiImplicitParam(name = "id", value = "用户编号", dataType = DataType.INT, paramType = ParamType.PATH)
- public void delete(@PathVariable Integer id) {
- log.info("单个参数用 ApiImplicitParam");
- }
-
- @PostMapping
- @ApiOperation(value = "添加用户(DONE)")
- public User post(@RequestBody User user) {
- log.info("如果是 POST PUT 这种带 @RequestBody 的可以不用写 @ApiImplicitParam");
- return user;
- }
-
- @PostMapping("/multipar")
- @ApiOperation(value = "添加用户(DONE)")
- public List multipar(@RequestBody List user) {
- log.info("如果是 POST PUT 这种带 @RequestBody 的可以不用写 @ApiImplicitParam");
-
- return user;
- }
-
- @PostMapping("/array")
- @ApiOperation(value = "添加用户(DONE)")
- public User[] array(@RequestBody User[] user) {
- log.info("如果是 POST PUT 这种带 @RequestBody 的可以不用写 @ApiImplicitParam");
- return user;
- }
-
- @PutMapping("/{id}")
- @ApiOperation(value = "修改用户(DONE)")
- public void put(@PathVariable Long id, @RequestBody User user) {
- log.info("如果你不想写 @ApiImplicitParam 那么 swagger 也会使用默认的参数名作为描述信息 ");
- }
-
- @PostMapping("/{id}/file")
- @ApiOperation(value = "文件上传(DONE)")
- public String file(@PathVariable Long id, @RequestParam("file") MultipartFile file) {
- log.info(file.getContentType());
- log.info(file.getName());
- log.info(file.getOriginalFilename());
- return file.getOriginalFilename();
- }
-}
-```
-
-## 参考
-
-- https://github.com/battcn/swagger-spring-boot/blob/master/README.md
-- 几款比较好看的swagger-ui,具体使用方法参见各个依赖的官方文档:
- - [battcn](https://github.com/battcn) 的 [swagger-spring-boot-starter](https://github.com/battcn/swagger-spring-boot) 文档:https://github.com/battcn/swagger-spring-boot/blob/master/README.md
- - [ swagger-ui-layer](https://gitee.com/caspar-chen/Swagger-UI-layer) 文档:https://gitee.com/caspar-chen/Swagger-UI-layer#%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8
- - [swagger-bootstrap-ui](https://gitee.com/xiaoym/swagger-bootstrap-ui) 文档:https://gitee.com/xiaoym/swagger-bootstrap-ui#%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E
- - [swagger-ui-themes](https://github.com/ostranme/swagger-ui-themes) 文档:https://github.com/ostranme/swagger-ui-themes#getting-started
diff --git a/demo-apidoc/demo-apidoc-swagger-beauty/pom.xml b/demo-apidoc/demo-apidoc-swagger-beauty/pom.xml
deleted file mode 100644
index 80704d2..0000000
--- a/demo-apidoc/demo-apidoc-swagger-beauty/pom.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
- 4.0.0
-
- demo-swagger-beauty
- 1.0.0-SNAPSHOT
- jar
-
- demo-swagger-beauty
- Demo project for Spring Boot
-
-
- com.xkcoding
- spring-boot-demo
- 1.0.0-SNAPSHOT
-
-
-
- UTF-8
- UTF-8
- 1.8
- 2.1.2-RELEASE
-
-
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
-
- com.battcn
- swagger-spring-boot-starter
- ${battcn.swagger.version}
-
-
-
- org.projectlombok
- lombok
- true
-
-
-
-
- demo-swagger-beauty
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
-
-
diff --git a/demo-apidoc/demo-apidoc-swagger-beauty/src/main/java/com/xkcoding/swagger/beauty/SpringBootDemoSwaggerBeautyApplication.java b/demo-apidoc/demo-apidoc-swagger-beauty/src/main/java/com/xkcoding/swagger/beauty/SpringBootDemoSwaggerBeautyApplication.java
deleted file mode 100644
index 349509d..0000000
--- a/demo-apidoc/demo-apidoc-swagger-beauty/src/main/java/com/xkcoding/swagger/beauty/SpringBootDemoSwaggerBeautyApplication.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.xkcoding.swagger.beauty;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-/**
- *
- * 启动器
- *
- *
- * @author yangkai.shen
- * @date Created in 2018-11-28 11:18
- */
-@SpringBootApplication
-public class SpringBootDemoSwaggerBeautyApplication {
-
- public static void main(String[] args) {
- SpringApplication.run(SpringBootDemoSwaggerBeautyApplication.class, args);
- }
-}
diff --git a/demo-apidoc/demo-apidoc-swagger-beauty/src/main/java/com/xkcoding/swagger/beauty/common/ApiResponse.java b/demo-apidoc/demo-apidoc-swagger-beauty/src/main/java/com/xkcoding/swagger/beauty/common/ApiResponse.java
deleted file mode 100644
index f7ae5bd..0000000
--- a/demo-apidoc/demo-apidoc-swagger-beauty/src/main/java/com/xkcoding/swagger/beauty/common/ApiResponse.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.xkcoding.swagger.beauty.common;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.io.Serializable;
-
-/**
- *
- * 通用API接口返回
- *
- *
- * @author yangkai.shen
- * @date Created in 2018-11-28 14:18
- */
-@Data
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-@ApiModel(value = "通用PI接口返回", description = "Common Api Response")
-public class ApiResponse implements Serializable {
- private static final long serialVersionUID = -8987146499044811408L;
- /**
- * 通用返回状态
- */
- @ApiModelProperty(value = "通用返回状态", required = true)
- private Integer code;
- /**
- * 通用返回信息
- */
- @ApiModelProperty(value = "通用返回信息", required = true)
- private String message;
- /**
- * 通用返回数据
- */
- @ApiModelProperty(value = "通用返回数据", required = true)
- private T data;
-}
diff --git a/demo-apidoc/demo-apidoc-swagger-beauty/src/main/java/com/xkcoding/swagger/beauty/controller/UserController.java b/demo-apidoc/demo-apidoc-swagger-beauty/src/main/java/com/xkcoding/swagger/beauty/controller/UserController.java
deleted file mode 100644
index 9fbb39d..0000000
--- a/demo-apidoc/demo-apidoc-swagger-beauty/src/main/java/com/xkcoding/swagger/beauty/controller/UserController.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package com.xkcoding.swagger.beauty.controller;
-
-import com.battcn.boot.swagger.model.DataType;
-import com.battcn.boot.swagger.model.ParamType;
-import com.xkcoding.swagger.beauty.common.ApiResponse;
-import com.xkcoding.swagger.beauty.entity.User;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.util.List;
-
-/**
- *
- * User Controller
- *
- *
- * @author yangkai.shen
- * @date Created in 2018-11-28 14:25
- */
-@RestController
-@RequestMapping("/user")
-@Api(tags = "1.0.0-SNAPSHOT", description = "用户管理", value = "用户管理")
-@Slf4j
-public class UserController {
- @GetMapping
- @ApiOperation(value = "条件查询(DONE)", notes = "备注")
- @ApiImplicitParams({@ApiImplicitParam(name = "username", value = "用户名", dataType = DataType.STRING, paramType = ParamType.QUERY, defaultValue = "xxx")})
- public ApiResponse getByUserName(String username) {
- log.info("多个参数用 @ApiImplicitParams");
- return ApiResponse.builder().code(200).message("操作成功").data(new User(1, username, "JAVA")).build();
- }
-
- @GetMapping("/{id}")
- @ApiOperation(value = "主键查询(DONE)", notes = "备注")
- @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "用户编号", dataType = DataType.INT, paramType = ParamType.PATH)})
- public ApiResponse get(@PathVariable Integer id) {
- log.info("单个参数用 @ApiImplicitParam");
- return ApiResponse.builder().code(200).message("操作成功").data(new User(id, "u1", "p1")).build();
- }
-
- @DeleteMapping("/{id}")
- @ApiOperation(value = "删除用户(DONE)", notes = "备注")
- @ApiImplicitParam(name = "id", value = "用户编号", dataType = DataType.INT, paramType = ParamType.PATH)
- public void delete(@PathVariable Integer id) {
- log.info("单个参数用 ApiImplicitParam");
- }
-
- @PostMapping
- @ApiOperation(value = "添加用户(DONE)")
- public User post(@RequestBody User user) {
- log.info("如果是 POST PUT 这种带 @RequestBody 的可以不用写 @ApiImplicitParam");
- return user;
- }
-
- @PostMapping("/multipar")
- @ApiOperation(value = "添加用户(DONE)")
- public List multipar(@RequestBody List user) {
- log.info("如果是 POST PUT 这种带 @RequestBody 的可以不用写 @ApiImplicitParam");
-
- return user;
- }
-
- @PostMapping("/array")
- @ApiOperation(value = "添加用户(DONE)")
- public User[] array(@RequestBody User[] user) {
- log.info("如果是 POST PUT 这种带 @RequestBody 的可以不用写 @ApiImplicitParam");
- return user;
- }
-
- @PutMapping("/{id}")
- @ApiOperation(value = "修改用户(DONE)")
- public void put(@PathVariable Long id, @RequestBody User user) {
- log.info("如果你不想写 @ApiImplicitParam 那么 swagger 也会使用默认的参数名作为描述信息 ");
- }
-
- @PostMapping("/{id}/file")
- @ApiOperation(value = "文件上传(DONE)")
- public String file(@PathVariable Long id, @RequestParam("file") MultipartFile file) {
- log.info(file.getContentType());
- log.info(file.getName());
- log.info(file.getOriginalFilename());
- return file.getOriginalFilename();
- }
-}
diff --git a/demo-apidoc/demo-apidoc-swagger-beauty/src/main/java/com/xkcoding/swagger/beauty/entity/User.java b/demo-apidoc/demo-apidoc-swagger-beauty/src/main/java/com/xkcoding/swagger/beauty/entity/User.java
deleted file mode 100644
index 3a75323..0000000
--- a/demo-apidoc/demo-apidoc-swagger-beauty/src/main/java/com/xkcoding/swagger/beauty/entity/User.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.xkcoding.swagger.beauty.entity;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.io.Serializable;
-
-/**
- *
- * 用户实体
- *
- *
- * @author yangkai.shen
- * @date Created in 2018-11-28 14:13
- */
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-@ApiModel(value = "用户实体", description = "User Entity")
-public class User implements Serializable {
- private static final long serialVersionUID = 5057954049311281252L;
- /**
- * 主键id
- */
- @ApiModelProperty(value = "主键id", required = true)
- private Integer id;
- /**
- * 用户名
- */
- @ApiModelProperty(value = "用户名", required = true)
- private String name;
- /**
- * 工作岗位
- */
- @ApiModelProperty(value = "工作岗位", required = true)
- private String job;
-}
diff --git a/demo-apidoc/demo-apidoc-swagger-beauty/src/main/resources/application.yml b/demo-apidoc/demo-apidoc-swagger-beauty/src/main/resources/application.yml
deleted file mode 100644
index 03be67e..0000000
--- a/demo-apidoc/demo-apidoc-swagger-beauty/src/main/resources/application.yml
+++ /dev/null
@@ -1,45 +0,0 @@
-server:
- port: 8080
- servlet:
- context-path: /demo
-spring:
- swagger:
- enabled: true
- title: spring-boot-demo
- base-package: com.xkcoding.swagger.beauty.controller
- description: 这是一个简单的 Swagger API 演示
- version: 1.0.0-SNAPSHOT
- contact:
- name: Yangkai.Shen
- email: 237497819@qq.com
- url: http://xkcoding.com
- # swagger扫描的基础包,默认:全扫描
- # base-package:
- # 需要处理的基础URL规则,默认:/**
- # base-path:
- # 需要排除的URL规则,默认:空
- # exclude-path:
- security:
- # 是否启用 swagger 登录验证
- filter-plugin: true
- username: xkcoding
- password: 123456
- global-response-messages:
- GET[0]:
- code: 400
- message: Bad Request,一般为请求参数不对
- GET[1]:
- code: 404
- message: NOT FOUND,一般为请求路径不对
- GET[2]:
- code: 500
- message: ERROR,一般为程序内部错误
- POST[0]:
- code: 400
- message: Bad Request,一般为请求参数不对
- POST[1]:
- code: 404
- message: NOT FOUND,一般为请求路径不对
- POST[2]:
- code: 500
- message: ERROR,一般为程序内部错误
diff --git a/demo-apidoc/demo-apidoc-swagger-beauty/src/test/java/com/xkcoding/swagger/beauty/SpringBootDemoSwaggerBeautyApplicationTests.java b/demo-apidoc/demo-apidoc-swagger-beauty/src/test/java/com/xkcoding/swagger/beauty/SpringBootDemoSwaggerBeautyApplicationTests.java
deleted file mode 100644
index ffba16e..0000000
--- a/demo-apidoc/demo-apidoc-swagger-beauty/src/test/java/com/xkcoding/swagger/beauty/SpringBootDemoSwaggerBeautyApplicationTests.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.xkcoding.swagger.beauty;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest
-public class SpringBootDemoSwaggerBeautyApplicationTests {
-
- @Test
- public void contextLoads() {
- }
-
-}
diff --git a/demo-apidoc/demo-apidoc-swagger/.gitignore b/demo-apidoc/demo-apidoc-swagger/.gitignore
deleted file mode 100644
index 82eca33..0000000
--- a/demo-apidoc/demo-apidoc-swagger/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-/target/
-!.mvn/wrapper/maven-wrapper.jar
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/build/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
\ No newline at end of file
diff --git a/demo-apidoc/demo-apidoc-swagger/README.md b/demo-apidoc/demo-apidoc-swagger/README.md
deleted file mode 100644
index 77f3bd6..0000000
--- a/demo-apidoc/demo-apidoc-swagger/README.md
+++ /dev/null
@@ -1,244 +0,0 @@
-# spring-boot-demo-swagger
-
-> 此 demo 主要演示了 Spring Boot 如何集成原生 swagger ,自动生成 API 文档。
->
-> 启动项目,访问地址:http://localhost:8080/demo/swagger-ui.html#/
-
-# pom.xml
-
-```xml
-
-
- 4.0.0
-
- spring-boot-demo-swagger
- 1.0.0-SNAPSHOT
- jar
-
- spring-boot-demo-swagger
- Demo project for Spring Boot
-
-
- com.xkcoding
- spring-boot-demo
- 1.0.0-SNAPSHOT
-
-
-
- UTF-8
- UTF-8
- 1.8
- 2.9.2
-
-
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
-
- io.springfox
- springfox-swagger2
- ${swagger.version}
-
-
-
- io.springfox
- springfox-swagger-ui
- ${swagger.version}
-
-
-
- org.projectlombok
- lombok
- true
-
-
-
-
- spring-boot-demo-swagger
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
-
-
-```
-
-## Swagger2Config.java
-
-```java
-/**
- *
- * Swagger2 配置
- *
- *
- * @author yangkai.shen
- * @date Created in 2018-11-29 11:14
- */
-@Configuration
-@EnableSwagger2
-public class Swagger2Config {
-
- @Bean
- public Docket createRestApi() {
- return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
- .select()
- .apis(RequestHandlerSelectors.basePackage("com.xkcoding.swagger.controller"))
- .paths(PathSelectors.any())
- .build();
- }
-
- private ApiInfo apiInfo() {
- return new ApiInfoBuilder().title("spring-boot-demo")
- .description("这是一个简单的 Swagger API 演示")
- .contact(new Contact("Yangkai.Shen", "http://xkcoding.com", "237497819@qq.com"))
- .version("1.0.0-SNAPSHOT")
- .build();
- }
-
-}
-```
-
-## UserController.java
-
-> 主要演示API层的注解。
-
-```java
-/**
- *
- * User Controller
- *
- *
- * @author yangkai.shen
- * @date Created in 2018-11-29 11:30
- */
-@RestController
-@RequestMapping("/user")
-@Api(tags = "1.0.0-SNAPSHOT", description = "用户管理", value = "用户管理")
-@Slf4j
-public class UserController {
- @GetMapping
- @ApiOperation(value = "条件查询(DONE)", notes = "备注")
- @ApiImplicitParams({@ApiImplicitParam(name = "username", value = "用户名", dataType = DataType.STRING, paramType = ParamType.QUERY, defaultValue = "xxx")})
- public ApiResponse getByUserName(String username) {
- log.info("多个参数用 @ApiImplicitParams");
- return ApiResponse.builder().code(200)
- .message("操作成功")
- .data(new User(1, username, "JAVA"))
- .build();
- }
-
- @GetMapping("/{id}")
- @ApiOperation(value = "主键查询(DONE)", notes = "备注")
- @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "用户编号", dataType = DataType.INT, paramType = ParamType.PATH)})
- public ApiResponse get(@PathVariable Integer id) {
- log.info("单个参数用 @ApiImplicitParam");
- return ApiResponse.builder().code(200)
- .message("操作成功")
- .data(new User(id, "u1", "p1"))
- .build();
- }
-
- @DeleteMapping("/{id}")
- @ApiOperation(value = "删除用户(DONE)", notes = "备注")
- @ApiImplicitParam(name = "id", value = "用户编号", dataType = DataType.INT, paramType = ParamType.PATH)
- public void delete(@PathVariable Integer id) {
- log.info("单个参数用 ApiImplicitParam");
- }
-
- @PostMapping
- @ApiOperation(value = "添加用户(DONE)")
- public User post(@RequestBody User user) {
- log.info("如果是 POST PUT 这种带 @RequestBody 的可以不用写 @ApiImplicitParam");
- return user;
- }
-
- @PostMapping("/multipar")
- @ApiOperation(value = "添加用户(DONE)")
- public List multipar(@RequestBody List user) {
- log.info("如果是 POST PUT 这种带 @RequestBody 的可以不用写 @ApiImplicitParam");
-
- return user;
- }
-
- @PostMapping("/array")
- @ApiOperation(value = "添加用户(DONE)")
- public User[] array(@RequestBody User[] user) {
- log.info("如果是 POST PUT 这种带 @RequestBody 的可以不用写 @ApiImplicitParam");
- return user;
- }
-
- @PutMapping("/{id}")
- @ApiOperation(value = "修改用户(DONE)")
- public void put(@PathVariable Long id, @RequestBody User user) {
- log.info("如果你不想写 @ApiImplicitParam 那么 swagger 也会使用默认的参数名作为描述信息 ");
- }
-
- @PostMapping("/{id}/file")
- @ApiOperation(value = "文件上传(DONE)")
- public String file(@PathVariable Long id, @RequestParam("file") MultipartFile file) {
- log.info(file.getContentType());
- log.info(file.getName());
- log.info(file.getOriginalFilename());
- return file.getOriginalFilename();
- }
-}
-```
-
-## ApiResponse.java
-
-> 主要演示了 实体类 的注解。
-
-```java
-/**
- *
- * 通用API接口返回
- *
- *
- * @author yangkai.shen
- * @date Created in 2018-11-29 11:30
- */
-@Data
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-@ApiModel(value = "通用PI接口返回", description = "Common Api Response")
-public class ApiResponse implements Serializable {
- private static final long serialVersionUID = -8987146499044811408L;
- /**
- * 通用返回状态
- */
- @ApiModelProperty(value = "通用返回状态", required = true)
- private Integer code;
- /**
- * 通用返回信息
- */
- @ApiModelProperty(value = "通用返回信息", required = true)
- private String message;
- /**
- * 通用返回数据
- */
- @ApiModelProperty(value = "通用返回数据", required = true)
- private T data;
-}
-```
-
-## 参考
-
-1. swagger 官方网站:https://swagger.io/
-
-2. swagger 官方文档:https://github.com/swagger-api/swagger-core/wiki/Swagger-2.X---Getting-started
-
-3. swagger 常用注解:https://github.com/swagger-api/swagger-core/wiki/Swagger-2.X---Annotations
diff --git a/demo-apidoc/demo-apidoc-swagger/pom.xml b/demo-apidoc/demo-apidoc-swagger/pom.xml
deleted file mode 100644
index 69e21d8..0000000
--- a/demo-apidoc/demo-apidoc-swagger/pom.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
- 4.0.0
-
- demo-swagger
- 1.0.0-SNAPSHOT
- jar
-
- demo-swagger
- Demo project for Spring Boot
-
-
- com.xkcoding
- spring-boot-demo
- 1.0.0-SNAPSHOT
-
-
-
- UTF-8
- UTF-8
- 1.8
- 2.9.2
-
-
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
-
- io.springfox
- springfox-swagger2
- ${swagger.version}
-
-
-
- io.springfox
- springfox-swagger-ui
- ${swagger.version}
-
-
-
- org.projectlombok
- lombok
- true
-
-
-
-
- demo-swagger
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
-
-
diff --git a/demo-apidoc/demo-apidoc-swagger/src/main/java/com/xkcoding/swagger/common/ApiResponse.java b/demo-apidoc/demo-apidoc-swagger/src/main/java/com/xkcoding/swagger/common/ApiResponse.java
deleted file mode 100644
index fb726cd..0000000
--- a/demo-apidoc/demo-apidoc-swagger/src/main/java/com/xkcoding/swagger/common/ApiResponse.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.xkcoding.swagger.common;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.io.Serializable;
-
-/**
- *
- * 通用API接口返回
- *
- *
- * @author yangkai.shen
- * @date Created in 2018-11-29 11:30
- */
-@Data
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-@ApiModel(value = "通用PI接口返回", description = "Common Api Response")
-public class ApiResponse implements Serializable {
- private static final long serialVersionUID = -8987146499044811408L;
- /**
- * 通用返回状态
- */
- @ApiModelProperty(value = "通用返回状态", required = true)
- private Integer code;
- /**
- * 通用返回信息
- */
- @ApiModelProperty(value = "通用返回信息", required = true)
- private String message;
- /**
- * 通用返回数据
- */
- @ApiModelProperty(value = "通用返回数据", required = true)
- private T data;
-}
diff --git a/demo-apidoc/demo-apidoc-swagger/src/main/java/com/xkcoding/swagger/common/DataType.java b/demo-apidoc/demo-apidoc-swagger/src/main/java/com/xkcoding/swagger/common/DataType.java
deleted file mode 100644
index b5266a6..0000000
--- a/demo-apidoc/demo-apidoc-swagger/src/main/java/com/xkcoding/swagger/common/DataType.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.xkcoding.swagger.common;
-
-/**
- *
- * 方便在 @ApiImplicitParam 的 dataType 属性使用
- *
- *
- * @author yangkai.shen
- * @date Created in 2018-11-29 13:23
- */
-public final class DataType {
-
- public final static String STRING = "String";
- public final static String INT = "int";
- public final static String LONG = "long";
- public final static String DOUBLE = "double";
- public final static String FLOAT = "float";
- public final static String BYTE = "byte";
- public final static String BOOLEAN = "boolean";
- public final static String ARRAY = "array";
- public final static String BINARY = "binary";
- public final static String DATETIME = "dateTime";
- public final static String PASSWORD = "password";
-
-}
diff --git a/demo-apidoc/demo-apidoc-swagger/src/main/java/com/xkcoding/swagger/common/ParamType.java b/demo-apidoc/demo-apidoc-swagger/src/main/java/com/xkcoding/swagger/common/ParamType.java
deleted file mode 100644
index 775ef6f..0000000
--- a/demo-apidoc/demo-apidoc-swagger/src/main/java/com/xkcoding/swagger/common/ParamType.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.xkcoding.swagger.common;
-
-/**
- *
- * 方便在 @ApiImplicitParam 的 paramType 属性使用
- *
- *
- * @author yangkai.shen
- * @date Created in 2018-11-29 13:24
- */
-public final class ParamType {
-
- public final static String QUERY = "query";
- public final static String HEADER = "header";
- public final static String PATH = "path";
- public final static String BODY = "body";
- public final static String FORM = "form";
-
-}
diff --git a/demo-apidoc/demo-apidoc-swagger/src/main/java/com/xkcoding/swagger/config/Swagger2Config.java b/demo-apidoc/demo-apidoc-swagger/src/main/java/com/xkcoding/swagger/config/Swagger2Config.java
deleted file mode 100644
index 6bc94ff..0000000
--- a/demo-apidoc/demo-apidoc-swagger/src/main/java/com/xkcoding/swagger/config/Swagger2Config.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.xkcoding.swagger.config;
-
-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;
-
-/**
- *
- * Swagger2 配置
- *
- *
- * @author yangkai.shen
- * @date Created in 2018-11-29 11:14
- */
-@Configuration
-@EnableSwagger2
-public class Swagger2Config {
-
- @Bean
- public Docket createRestApi() {
- return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.xkcoding.swagger.controller")).paths(PathSelectors.any()).build();
- }
-
- private ApiInfo apiInfo() {
- return new ApiInfoBuilder().title("spring-boot-demo").description("这是一个简单的 Swagger API 演示").contact(new Contact("Yangkai.Shen", "http://xkcoding.com", "237497819@qq.com")).version("1.0.0-SNAPSHOT").build();
- }
-
-}
diff --git a/demo-apidoc/demo-apidoc-swagger/src/main/java/com/xkcoding/swagger/controller/UserController.java b/demo-apidoc/demo-apidoc-swagger/src/main/java/com/xkcoding/swagger/controller/UserController.java
deleted file mode 100644
index 369f6f7..0000000
--- a/demo-apidoc/demo-apidoc-swagger/src/main/java/com/xkcoding/swagger/controller/UserController.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package com.xkcoding.swagger.controller;
-
-import com.xkcoding.swagger.common.ApiResponse;
-import com.xkcoding.swagger.common.DataType;
-import com.xkcoding.swagger.common.ParamType;
-import com.xkcoding.swagger.entity.User;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.util.List;
-
-/**
- *
- * User Controller
- *
- *
- * @author yangkai.shen
- * @date Created in 2018-11-29 11:30
- */
-@RestController
-@RequestMapping("/user")
-@Api(tags = "1.0.0-SNAPSHOT", description = "用户管理", value = "用户管理")
-@Slf4j
-public class UserController {
- @GetMapping
- @ApiOperation(value = "条件查询(DONE)", notes = "备注")
- @ApiImplicitParams({@ApiImplicitParam(name = "username", value = "用户名", dataType = DataType.STRING, paramType = ParamType.QUERY, defaultValue = "xxx")})
- public ApiResponse getByUserName(String username) {
- log.info("多个参数用 @ApiImplicitParams");
- return ApiResponse.builder().code(200).message("操作成功").data(new User(1, username, "JAVA")).build();
- }
-
- @GetMapping("/{id}")
- @ApiOperation(value = "主键查询(DONE)", notes = "备注")
- @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "用户编号", dataType = DataType.INT, paramType = ParamType.PATH)})
- public ApiResponse get(@PathVariable Integer id) {
- log.info("单个参数用 @ApiImplicitParam");
- return ApiResponse.builder().code(200).message("操作成功").data(new User(id, "u1", "p1")).build();
- }
-
- @DeleteMapping("/{id}")
- @ApiOperation(value = "删除用户(DONE)", notes = "备注")
- @ApiImplicitParam(name = "id", value = "用户编号", dataType = DataType.INT, paramType = ParamType.PATH)
- public void delete(@PathVariable Integer id) {
- log.info("单个参数用 ApiImplicitParam");
- }
-
- @PostMapping
- @ApiOperation(value = "添加用户(DONE)")
- public User post(@RequestBody User user) {
- log.info("如果是 POST PUT 这种带 @RequestBody 的可以不用写 @ApiImplicitParam");
- return user;
- }
-
- @PostMapping("/multipar")
- @ApiOperation(value = "添加用户(DONE)")
- public List multipar(@RequestBody List user) {
- log.info("如果是 POST PUT 这种带 @RequestBody 的可以不用写 @ApiImplicitParam");
-
- return user;
- }
-
- @PostMapping("/array")
- @ApiOperation(value = "添加用户(DONE)")
- public User[] array(@RequestBody User[] user) {
- log.info("如果是 POST PUT 这种带 @RequestBody 的可以不用写 @ApiImplicitParam");
- return user;
- }
-
- @PutMapping("/{id}")
- @ApiOperation(value = "修改用户(DONE)")
- public void put(@PathVariable Long id, @RequestBody User user) {
- log.info("如果你不想写 @ApiImplicitParam 那么 swagger 也会使用默认的参数名作为描述信息 ");
- }
-
- @PostMapping("/{id}/file")
- @ApiOperation(value = "文件上传(DONE)")
- public String file(@PathVariable Long id, @RequestParam("file") MultipartFile file) {
- log.info(file.getContentType());
- log.info(file.getName());
- log.info(file.getOriginalFilename());
- return file.getOriginalFilename();
- }
-}
diff --git a/demo-apidoc/demo-apidoc-swagger/src/main/resources/application.yml b/demo-apidoc/demo-apidoc-swagger/src/main/resources/application.yml
deleted file mode 100644
index a02fbde..0000000
--- a/demo-apidoc/demo-apidoc-swagger/src/main/resources/application.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-server:
- port: 8080
- servlet:
- context-path: /demo
\ No newline at end of file
diff --git a/demo-apidoc/demo-apidoc-swagger/src/test/java/com/xkcoding/swagger/SpringBootDemoSwaggerApplicationTests.java b/demo-apidoc/demo-apidoc-swagger/src/test/java/com/xkcoding/swagger/SpringBootDemoSwaggerApplicationTests.java
deleted file mode 100644
index 45742c4..0000000
--- a/demo-apidoc/demo-apidoc-swagger/src/test/java/com/xkcoding/swagger/SpringBootDemoSwaggerApplicationTests.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.xkcoding.swagger;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest
-public class SpringBootDemoSwaggerApplicationTests {
-
- @Test
- public void contextLoads() {
- }
-
-}
diff --git a/demo-apidoc/pom.xml b/demo-apidoc/pom.xml
index c770963..d396ef3 100644
--- a/demo-apidoc/pom.xml
+++ b/demo-apidoc/pom.xml
@@ -18,4 +18,8 @@
17
+
+ demo-apidoc-springdoc
+
+