diff --git a/README.md b/README.md index da451f0eb042d3acf9f989e2beb31d2cbdbf0d77..5aac19899fc36d77fc3d7e8d315a29a32498609f 100644 --- a/README.md +++ b/README.md @@ -27,4 +27,6 @@ SpringBoot应用集合 - [SpringBoot整合netty](https://gitee.com/superbutton/SpringBoot-Components/tree/develop/Springboot-Netty-Parent) - [SpringBoot整合webservice](https://gitee.com/superbutton/SpringBoot-Components/tree/develop/Springboot-Webservice) - [SpringBoot整合ActiveMq](https://gitee.com/superbutton/SpringBoot-Components/tree/develop/Springboot-ActiveMq) +- [SpringBoot整合Knife4j](https://gitee.com/superbutton/SpringBoot-Components/tree/develop/springboot-knife4j) + diff --git a/springboot-knife4j/.gitignore b/springboot-knife4j/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..a2a3040aa86debfd8826d9c2b5c816314c17d9fe --- /dev/null +++ b/springboot-knife4j/.gitignore @@ -0,0 +1,31 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/** +!**/src/test/** + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ + +### VS Code ### +.vscode/ diff --git a/springboot-knife4j/README.md b/springboot-knife4j/README.md new file mode 100644 index 0000000000000000000000000000000000000000..717c8608a1cb72c414db9c4a41084f8fd53c0f38 --- /dev/null +++ b/springboot-knife4j/README.md @@ -0,0 +1,3 @@ +# Spring Boot整合Knife4j + +http://localhost:8080/doc.html \ No newline at end of file diff --git a/springboot-knife4j/pom.xml b/springboot-knife4j/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..95aa979342c05c1235cf3c22d08e09b89817f331 --- /dev/null +++ b/springboot-knife4j/pom.xml @@ -0,0 +1,96 @@ + + + 4.0.0 + com.button + springboot-knife4j + 0.0.1-SNAPSHOT + springboot-knife4j + Spring Boot Knife4j + + + 1.8 + UTF-8 + UTF-8 + 2.3.7.RELEASE + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-devtools + runtime + true + + + org.projectlombok + lombok + true + + + org.springframework.boot + spring-boot-starter-test + test + + + org.junit.vintage + junit-vintage-engine + + + + + com.github.xiaoymin + knife4j-spring-boot-starter + 3.0.2 + + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + UTF-8 + + + + org.springframework.boot + spring-boot-maven-plugin + 2.3.7.RELEASE + + com.button.SpringbootKnife4jApplication + + + + repackage + + repackage + + + + + + + + diff --git a/springboot-knife4j/src/main/java/com/button/SpringbootKnife4jApplication.java b/springboot-knife4j/src/main/java/com/button/SpringbootKnife4jApplication.java new file mode 100644 index 0000000000000000000000000000000000000000..33429c381a2007672b711d1ded35a99e5921b1ad --- /dev/null +++ b/springboot-knife4j/src/main/java/com/button/SpringbootKnife4jApplication.java @@ -0,0 +1,13 @@ +package com.button; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SpringbootKnife4jApplication { + + public static void main(String[] args) { + SpringApplication.run(SpringbootKnife4jApplication.class, args); + } + +} diff --git a/springboot-knife4j/src/main/java/com/button/config/Swagger2Config.java b/springboot-knife4j/src/main/java/com/button/config/Swagger2Config.java new file mode 100644 index 0000000000000000000000000000000000000000..a5f928169875cf90e572a0501f63fa01bae3ebc8 --- /dev/null +++ b/springboot-knife4j/src/main/java/com/button/config/Swagger2Config.java @@ -0,0 +1,38 @@ +package com.button.config; + +import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; +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.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +@Configuration +@EnableSwagger2 +@EnableKnife4j +public class Swagger2Config { + @Bean + public Docket createRestApi() { + return new Docket(DocumentationType.SWAGGER_2) + .useDefaultResponseMessages(false) + .apiInfo(apiInfo()) + .select() + .apis(RequestHandlerSelectors.basePackage("com.button.controller")) + .paths(PathSelectors.any()) + .build(); + + } + + private ApiInfo apiInfo() { + return new ApiInfoBuilder() + .title("springboot整合Knife4j") + .description("springboot整合Knife4j") + .termsOfServiceUrl("http://localhost:8080/") + .version("1.0") + .build(); + } +} diff --git a/springboot-knife4j/src/main/java/com/button/controller/UserController.java b/springboot-knife4j/src/main/java/com/button/controller/UserController.java new file mode 100644 index 0000000000000000000000000000000000000000..b44b96d0531924eca1ac3892bce8dc85af917f93 --- /dev/null +++ b/springboot-knife4j/src/main/java/com/button/controller/UserController.java @@ -0,0 +1,30 @@ +package com.button.controller; + +import com.button.domain.bean.User; +import com.button.domain.vo.ResultData; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.UUID; + +@Slf4j +@RequestMapping("/user") +@RestController +public class UserController { + + @ApiOperation(value = "用户登录测试接口", notes = "用户登录接口") + @GetMapping("login") + public ResultData login(@RequestParam String userName, @RequestParam String passWord){ + return ResultData.success(userName + "," + passWord); + } + + @ApiOperation(value = "获取用户信息", notes = "获取用户信息") + @PostMapping("userInfo") + public ResultData userInfo(@RequestBody User user){ + return ResultData.success(user); + } +} diff --git a/springboot-knife4j/src/main/java/com/button/domain/vo/ResultData.java b/springboot-knife4j/src/main/java/com/button/domain/vo/ResultData.java new file mode 100644 index 0000000000000000000000000000000000000000..1c5001d5108f454ab1501f6ceb7416523c4ff217 --- /dev/null +++ b/springboot-knife4j/src/main/java/com/button/domain/vo/ResultData.java @@ -0,0 +1,102 @@ +package com.button.domain.vo; + +import java.io.Serializable; + +/** + * @author Button + */ +public class ResultData implements Serializable { + + private static final long serialVersionUID = 1L; + public static final ErrorMsg SUCCESS = new ErrorMsg("success", "操作成功"); + public static final ErrorMsg EXCEPTION = new ErrorMsg("exception", "系统忙,请稍后重试"); + public static final ErrorMsg REQUEST_FAILED = new ErrorMsg("request.failed", "网络请求异常"); + public static final ErrorMsg ERROR_NO_DATA = new ErrorMsg("error.no.data", "无数据"); + + private ErrorMsg errorMsg; + private T data; + private Integer time; + + public static ResultData success(T data) { + ResultData result = new ResultData(); + result.setErrorMsg(SUCCESS); + result.setData(data); + result.setTime((int)(System.currentTimeMillis() / 1000)); + return result; + } + + public static ResultData error(ErrorMsg error) { + ResultData result = new ResultData(); + result.setErrorMsg(error); + return result; + } + + public Integer getTime() { + return time; + } + + public void setTime(Integer time) { + this.time = time; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } + + public ErrorMsg getErrorMsg() { + return errorMsg; + } + + public void setErrorMsg(ErrorMsg errorMsg) { + this.errorMsg = errorMsg; + } + + public boolean isSuccessful() { + return SUCCESS.getCode().equals(this.errorMsg.getCode()); + } + + public boolean errorFor(ErrorMsg errMsg) { + return this.errorMsg.getCode().equalsIgnoreCase(errMsg.getCode()); + } + + public static class ErrorMsg implements Serializable { + private static final long serialVersionUID = -8899306544168830547L; + private String code; + private String message; + + public ErrorMsg(String code, String message) { + this.code = code; + this.message = message; + } + + public String getCode() { + return this.code; + } + + public String getMessage() { + return this.message; + } + + public ErrorMsg setParam(String key, String value) { + return new ErrorMsg(this.code, this.message.replace(key, value)); + } + + public ErrorMsg withParam(String value) { + return setParam("PARA_NAME", value); + } + + @Override + public String toString() { + return "[code=" + code + ", message=" + message + "]"; + } + } + + @Override + public String toString() { + return "[errorMsg=" + errorMsg + ", data=" + data + "]"; + } +} diff --git a/springboot-knife4j/src/main/resources/application.yml b/springboot-knife4j/src/main/resources/application.yml new file mode 100644 index 0000000000000000000000000000000000000000..89fdb2e68f6d78dc906a959e7506e0de21f55ad5 --- /dev/null +++ b/springboot-knife4j/src/main/resources/application.yml @@ -0,0 +1,9 @@ +# 应用名称 +spring: + application: + name: springboot-knife4j +# 应用服务 WEB 访问端口 +server: + port: 8080 + + diff --git a/springboot-knife4j/src/test/java/com/button/SpringbootKnife4jApplicationTests.java b/springboot-knife4j/src/test/java/com/button/SpringbootKnife4jApplicationTests.java new file mode 100644 index 0000000000000000000000000000000000000000..e94b15a39a28497e55d69bc8a1bfaeb000af93e0 --- /dev/null +++ b/springboot-knife4j/src/test/java/com/button/SpringbootKnife4jApplicationTests.java @@ -0,0 +1,13 @@ +package com.button; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class SpringbootKnife4jApplicationTests { + + @Test + void contextLoads() { + } + +}