网站产品优化,阳江招聘网娱乐业,网页设计素材推荐,智能小程序开发报价一个好的项目#xff0c;接口文档是非常重要的#xff0c;除了能帮助前端和后端开发人员更快地协作完成开发任务#xff0c;接口文档还能用来生成资源权限#xff0c;对权限访问控制的实现有很大的帮助。
这篇文章介绍一下企业中常用的接口文档工具Knife4j#xff08;基于…一个好的项目接口文档是非常重要的除了能帮助前端和后端开发人员更快地协作完成开发任务接口文档还能用来生成资源权限对权限访问控制的实现有很大的帮助。
这篇文章介绍一下企业中常用的接口文档工具Knife4j基于Swagger实现的使用。 SpringBoot整合Knife4j的步骤
创建项目
首先通过Intellij IDEA创建一个springboot项目命名为springboot-knife4j 修改配置
修改pom.xml 修改一下springboot的版本和java的版本本篇文章使用springboot 2.5.9版本然后添加knife4j的依赖。 完整的pom.xml文件内容
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.5.9/versionrelativePath //parentgroupIdcn.edu.sgu.www/groupIdartifactIdspringboot-knife4j/artifactIdversion0.0.1-SNAPSHOT/versionpropertiesjava.version1.8/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency!--knife4j--dependencygroupIdcom.github.xiaoymin/groupIdartifactIdknife4j-spring-boot-starter/artifactIdversion2.0.9/version/dependency!--lombok--dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.22/versionoptionaltrue/optional/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build
/project 修改application.yml
开启knife4j的增强模式
knife4j:enable: true 创建Knife4j配置类
package cn.edu.sgu.www.knife4j.config;import com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver;
import org.springframework.beans.factory.annotation.Autowired;
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.EnableSwagger2WebMvc;/*** Knife4j配置类* author heyunlin* version 1.0*/
Configuration
EnableSwagger2WebMvc
public class Knife4jConfig {// 指定Controller包路径必须private static final String basePackage cn.edu.sgu.www.knife4j.controller;private static final String host LAPTOP-0N6P8HTP;private static final String title Spring Boot整合Knife4j案例项目;private static final String description title 在线API文档;private static final String termsOfServiceUrl https://www.apache.org/licenses/LICENSE-2.0;private static final String contactName heyunlin; // 联系人private static final String contactUrl https://gitee.com/he-yunlin;private static final String contactEmail heyl163_com163.com;private static final String version 1.0.0;private final OpenApiExtensionResolver openApiExtensionResolver;Autowiredpublic Knife4jConfig(OpenApiExtensionResolver openApiExtensionResolver) {this.openApiExtensionResolver openApiExtensionResolver;}Beanpublic Docket docket() {String groupName 1.0.0;return new Docket(DocumentationType.SWAGGER_2).host(host).apiInfo(apiInfo()).groupName(groupName).select().apis(RequestHandlerSelectors.basePackage(basePackage)).paths(PathSelectors.any()).build().extensions(openApiExtensionResolver.buildExtensions(groupName));}private ApiInfo apiInfo() {return new ApiInfoBuilder().title(title).description(description).termsOfServiceUrl(termsOfServiceUrl).contact(new Contact(contactName, contactUrl, contactEmail)).version(version).build();}} 创建控制器类
新建UserController类上使用Api注解在方法上使用ApiOpration注解
package cn.edu.sgu.www.knife4j.controller;import cn.edu.sgu.www.knife4j.dto.UserLoginDTO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** author heyunlin* version 1.0*/
Api(tags 用户管理)
RestController
RequestMapping(/user)
public class UserController {ApiOperation(登录认证)PostMapping(login)public String login(UserLoginDTO userLoginDTO) {return 登录成功;}} 创建传输对象实体类
package cn.edu.sgu.www.knife4j.dto;import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;/*** author heyunlin* version 1.0*/
Data
ApiModel
public class UserLoginDTO {ApiModelProperty(value 用户名, required true)private String username;ApiModelProperty(value 密码, required true)private String password;
} 除此之外Knife4j还提供了使用在参数上的注解如ApiParam
package cn.edu.sgu.www.knife4j.controller;import cn.edu.sgu.www.knife4j.dto.UserLoginDTO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** author heyunlin* version 1.0*/
Api(tags 用户管理)
RestController
RequestMapping(/user)
public class UserController {ApiOperation(登录认证)PostMapping(/login)public String login(UserLoginDTO userLoginDTO) {return 登录成功~;}ApiOperation(用户注册)PostMapping(/register)public String register(ApiParam(value 用户名, required true) String username,ApiParam(value 密码, required true) String password) {return 注册成功~;}} 最后启动项目访问localhost:端口号/doc.html 好了文章就分享到这里了代码已经上传到gitee可按需获取~
Spring Boot整合Knife4j案例项目https://gitee.com/he-yunlin/springboot-knife4j.git