Swagger

2021/6/4 10:25:53

本文主要是介绍Swagger,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.Swagger使用

1.简介

在开发者开发时,生成接口文档
现在SWAGGER官网主要提供了几种开源工具,提供相应的功能。可以通过配置甚至是修改源码以达到你想要的效果。
Swagger UI:提供了一个可视化的UI页面展示描述文件。接口的调用方、测试、项目经理等都可以在该页面中对相关接口进行查阅和做一些简单的接口请求。该项目支持在线导入描述文件和本地部署UI项目。
Swagger Editor: 类似于markendown编辑器的编辑Swagger描述文件的编辑器,该编辑支持实时预览描述文件的更新效果。也提供了在线编辑器和本地部署编辑器两种方式。

Swagger Inspector: 感觉和postman差不多,是一个可以对接口进行测试的在线版的postman。比在Swagger UI里面做接口请求,会返回更多的信息,也会保存你请求的实际请求参数等数据。

Swagger Hub:集成了上面所有项目的各个功能,你可以以项目和版本为单位,将你的描述文件上传到Swagger Hub中。在Swagger Hub中可以完成上面项目的所有工作,需要注册账号,分免费版和收费版。

作者:wuqke
链接:https://www.jianshu.com/p/349e130e40d5
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2.如何搭建基于spring框架的swagger流程应用

1.加入poml文件

    <!-- swagger2 begin -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
            <!-- 排除jar包 因为2.9.2的版本导致控制台报错-->
            <exclusions>
                <exclusion>
                    <groupId>io.swagger</groupId>
                    <artifactId>swagger-models</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- swagger2 end -->
        <!--swagger-models begin -->
        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-models</artifactId>
            <version>1.5.22</version>
        </dependency>
        <!--swagger-models end -->
        
        <!-- springfox-swagger-ui begin -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>
        <!-- springfox-swagger-ui end -->

        <!-- swagger-bootstrap-ui begin  使用此poml会使用 http://localhost:8088/doc.html -->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>swagger-bootstrap-ui</artifactId>
            <version>1.9.3</version>
        </dependency>
        <!-- swagger-bootstrap-ui end -->

<!--补充 :如果自动生成的xmlsql文件不在核心配置里,而在程序中,需要修改build-- >

<!-- 将源码中的xml也进行打包 -->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <!-- 如果配置了resource,默认的resources就失效了,所以必须再将resources也加载进来,否则会出问题,也可以指定包含文件 -->
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>

2.创建配置类

/**
 * Created on 2021/6/2.
 * Author: lzy
 * Description: swagger配置类
 */
@Configuration
@EnableSwagger2 //开启swagger注解
@EnableSwaggerBootstrapUI  // 使用github
public class SwaggerConfig {

}

3.在controller使用swagger

1.@Api

// @Api  此注解一般加在controller类上,内容一般都是:xxx接口,版本号
@RestController
@Api(tags = "电子文档操作入口,当前版本号1.0.0")
@Slf4j
public class EdocEntryController {
}

2.@ApiOperation

// @ApiOperation 此注解一般都是控制器中的某个方法,用于描述某个接口的功能 value-方法的名称和功能,notes-方法的详细描述
    @ApiOperation(value = "根据分类编号查询文档列表",notes = "支持多个分类查询,支持分页,支持统一返回结果")  

3.@ApiImplicitParams 和 ApiParam

//  @ApiImplicitParams此注解一般都是某个方法的参数说明,用于描述参数的名称和含义
    @ApiImplicitParams({
            @ApiImplicitParam(name = "pageSize",required = true,value = "页面容量",defaultValue = "3")
    })

// @ApiParam 和  @ApiImplicitParams 注解一样,描述参数
public RequestResult<PageSupport<EdocEntry>> queryEntrysByCids(@ApiParam(required = true,name = "pageNo",value = "页码",defaultValue = "1") @RequestParam Integer pageNo, @RequestParam Integer pageSize, @RequestParam Integer ... cids){
        return ResultBuildUtil.success(edocEntryService.getEntrysByCids(pageNo,pageSize,cids));
    }

4.@ApiResponses

     // 描述操作的可能响应,这可用于描述 Rest API 调用中可能的成功和错误 code 码。
 	@PostMapping("/addEdocInfo")
    @ApiOperation(value = "新增电子文档",notes = "必须传入一个json数据")
	@ApiResponses({
            @ApiResponse(code = 6001,message = "传入参数实体")
    })
    public RequestResult<String> queryAddEdocInfo(@RequestBody @Valid EdocEntryFrom edocEntryFrom, BindingResult bindingResult){
        // 参数校验
        if(bindingResult.hasErrors()){
            return ResultBuildUtil.failure("6001",bindingResult.getFieldError().getDefaultMessage());
        }

        if(edocEntryService.addEdocEntry(edocEntryFrom)){
            return ResultBuildUtil.success();
        }else {
            return ResultBuildUtil.failure();
        }
    }

4.在实体类上使用swagger

1.@ApiModel

// 此注解一般用在实体类上,用于描述实体类
@ApiModel(value = "电子文档详情",description = "对应数据库中的edoc_entry表")
public class EdocEntry implements Serializable {
    /**
     * id
     */
    // 此注解一般用在实体类的属性上,用于描述属性字段的含义
    @ApiModelProperty(value = "文档编号",example = "1")
    private Long id;
}

2.@ApiModelProperty

/**
     * id
     */
    // 此注解一般用在实体类的属性上,用于描述属性字段的含义
    @ApiModelProperty(value = "文档编号",example = "1")
    private Long id;

    /**
     * 类别id
     */
    @ApiModelProperty(value = "文档类别编号",example = "1")
    private Long cId;

    /**
     * 标题
     */
    @ApiModelProperty(value = "文档主题")
    private String title;

5.如何实现VO -DTO实体之间参数copy

 @Override
    public boolean addEdocEntry(EdocEntryFrom edocEntryFrom) {
        // 进行参数和持久化参数对象不一致,需要转换
        EdocEntry edocEntry = new EdocEntry();
        // 借助工具类,直接拷贝属性
        BeanUtils.copyProperties(edocEntryFrom,edocEntry);
        // 针对创建时间,进行处理
        edocEntry.setCreateDate(new Date());
        // 调用持久化接口,插入数据
        return edocEntryMapper.insert(edocEntry) > 0;
    }



这篇关于Swagger的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程