淮南网官方网站,wordpress 流量插件,怎么样自己开网站,长沙装修网Swagger 1、Swagger1.1 swagger介绍1.2 项目集成swagger流程1.3 项目集成swagger 2、knife4j2.1 knife4j介绍2.2 项目集成knife4j 1、Swagger
1.1 swagger介绍
官网#xff1a;https://swagger.io/ Swagger 是一个规范和完整的Web API框架#xff0c;用于生成、描述、调用和… Swagger 1、Swagger1.1 swagger介绍1.2 项目集成swagger流程1.3 项目集成swagger 2、knife4j2.1 knife4j介绍2.2 项目集成knife4j 1、Swagger
1.1 swagger介绍
官网https://swagger.io/ Swagger 是一个规范和完整的Web API框架用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。
功能主要包含以下几点:
A. 使得前后端分离开发更加方便有利于团队协作;
B. 接口文档在线自动生成降低后端开发人员编写接口文档的负担;
C. 接口功能测试;
使用Swagger只需要按照它的规范去定义接口及接口相关的信息再通过Swagger衍生出来的一系列项目和工具就可以做到生成各种格式的接口文档以及在线接口调试页面等等;
1.2 项目集成swagger流程
引入swagger依赖定义swagger配置类 swagger扫描管理的web资源路径配置项目文档标题、描述、版本等信息、官网地址等信息 通过swagger注解给指定资源添加描述信息项目启动访问并测试在线资源
1.3 项目集成swagger 在 MAVEN构建的项目中引入依赖 pom.xml !--引入swagger依赖--
dependencygroupIdio.springfox/groupIdartifactIdspringfox-swagger2/artifactId
/dependency
!--swagger ui支持--
!-- 导错3.0.0的包导致swagger-ui.html界面显示不出来--
dependencygroupIdio.springfox/groupIdartifactIdspringfox-swagger-ui/artifactId
/dependency在项目工程config包定义swagger配置类 package com.shen.stock.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;/*** 定义swagger配置类*/ConfigurationEnableSwagger2public class SwaggerConfiguration {Beanpublic Docket buildDocket() {//构建在线API概要对象return new Docket(DocumentationType.SWAGGER_2).select()// 要扫描的API(Controller)基础包.apis(RequestHandlerSelectors.basePackage(com.shen.stock.controller)).paths(PathSelectors.any()).build().apiInfo(buildApiInfo()).enable(true);}private ApiInfo buildApiInfo() {//网站联系方式Contact contact new Contact(假设在百度,https://www.baidu.com,bhd42414666163.com);return new ApiInfoBuilder().title(今日指数-在线接口API文档)//文档标题.description(这是一个方便前后端开发人员快速了解开发接口需求的在线接口API文档)//文档描述信息//.contact(contact)//站点联系人相关信息.version(1.0.0)//文档版本.build();}}在stock_backend工程导入配置类 SpringBootApplicationMapperScan(com.shen.stock.mapper) //扫描持久层的接口统一生成代理对象并维护到spring的IOC容器中public class BackendApp {public static void main(String[] args) {SpringApplication.run(BackendApp.class, args);}}swagger相关注解介绍 注解位置说明Api类加载Controller类上,表示对类的说明ApiModel类(通常是实体类)描述实体类的作用通常表示接口接收参数的实体对象ApiModelProperty属性描述实体类的属性用对象接收参数时描述对象的一个字段ApiOperation方法说明方法的用途、作用ApiImplicitParams方法表示一组参数说明ApiImplicitParam方法用在ApiImplicitParams注解中指定一个请求参数的各个方面的属性ApiParam方法入参或者方法之上单个参数的描述信息描述form表单、url参数ApiImplicitParam注解详解 属性取值作用paramType查询参数类型path以地址的形式rest风格提交数据query直接跟参数完成自动映射赋值(/add/user?namezhangsan)body以流的形式提交 仅支持POSTheader参数在request headers 里边提交form以form表单的形式提交 仅支持POSTdataType参数的数据类型 只作为标志说明并没有实际验证LongStringname接收参数名(方法入参的名称)value接收参数的意义描述描述信息required参数是否必填true必填false非必填defaultValue默认值 其它注解 ApiResponseHTTP响应其中1个描述 ApiResponsesHTTP响应整体描述 ApiIgnore使用该注解忽略这个API ApiError 发生错误返回的信息 在项目工程为web资源添加注解支持示例
RestController
RequestMapping(/api)
Api(value 用户认证相关接口定义,tags 用户功能-用户登录功能)
public class UserController {/*** 注入用户服务bean*/Autowiredprivate UserService userService;/*** 根据用户名查询用户信息* param userName* return*/GetMapping(/{userName})ApiOperation(value 根据用户名查询用户信息,notes 用户信息查询,response SysUser.class)ApiImplicitParam(paramType path,name userName,value 用户名,required true)public SysUser getUserByUserName(PathVariable(userName) String userName){return userService.getUserByUserName(userName);}/*** 用户登录功能接口* param vo* return*/PostMapping(/login)ApiOperation(value 用户登录功能,notes 用户登录,response R.class)public RLoginRespVo login(RequestBody LoginReqVo vo){return userService.login(vo);}/*** 生成登录校验码的访问接口* return*/GetMapping(/captcha)ApiOperation(value 验证码生成功能,response R.class)public RMap getCaptchaCode(){return userService.getCaptchaCode();}
}资源访问http://localhost:8091/swagger-ui.html 2、knife4j
2.1 knife4j介绍
knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名kni4j是希望它能像一把匕首一样小巧,轻量,并且功能强悍!
gitee地址https://gitee.com/xiaoym/knife4j
官方文档https://doc.xiaominfo.com/
效果演示http://knife4j.xiaominfo.com/doc.html
核心功能
该UI增强包主要包括两大核心功能文档说明 和 在线调试
文档说明根据Swagger的规范说明详细列出接口文档的说明包括接口地址、类型、请求示例、请求参数、响应示例、响应参数、响应码等信息使用 swagger-bootstrap-ui 能根据该文档说明对该接口的使用情况一目了然。在线调试提供在线接口联调的强大功能自动解析当前接口参数,同时包含表单验证调用参数可返回接口响应内容、headers、Curl请求命令实例、响应时间、响应状态码等信息帮助开发者在线调试而不必通过其他测试工具测试接口是否正确,简介、强大。个性化配置通过个性化ui配置项可自定义UI的相关显示信息离线文档根据标准规范生成的在线markdown离线文档开发者可以进行拷贝生成markdown接口文档通过其他第三方markdown转换工具转换成html或pdf这样也可以放弃swagger2markdown组件接口排序自1.8.5后ui支持了接口排序功能例如一个注册功能主要包含了多个步骤,可以根据swagger-bootstrap-ui提供的接口排序规则实现接口的排序step化接口操作方便其他开发者进行接口对接
2.2 项目集成knife4j
1)快速集成knife4j
在 MAVEN 工程添加依赖 pom.xml
!--knife4j的依赖--
dependencygroupIdcom.github.xiaoymin/groupIdartifactIdknife4j-spring-boot-starter/artifactId
/dependency
!--支持接口参数校验处理--
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-validation/artifactId
/dependency在swagger配置类添加knife4j配置
Configuration
EnableSwagger2
EnableKnife4j
Import(BeanValidatorPluginsConfiguration.class)
public class SwaggerConfiguration {//.....其它不变......
}以上有两个注解需要特别说明如下表
注解说明EnableSwagger2该注解是Springfox-swagger框架提供的使用Swagger注解该注解必须加EnableKnife4j该注解是knife4j提供的增强注解,Ui提供了例如动态参数、参数过滤、接口排序等增强功能,如果你想使用这些增强功能就必须加该注解否则可以不用加
2)访问在线文档资源http://localhost:8091/doc.html