专业的编程技术博客社区

网站首页 > 博客文章 正文

四、Swagger介绍与使用(Spring Boot整合Swagger3)

baijin 2024-09-15 14:39:26 博客文章 5 ℃ 0 评论

开发中有很多接口的开发,接口需要配合完整的接口文档才更方便沟通、使用,Swagger是一个用于自动生成在线接口文档的框架,并可在线测试接口,可以很好的跟Spring结合,只需要添加少量的代码和注解即可,而且在接口变动的同时,即可同步修改接口文档,不用再手动维护接口文档。Swagger3是17年推出的最新版本,相比于Swagger2配置更少,使用更方便。

1. 开发环境

  • JDK 1.8
  • SpringBoot 2.1.18

2. 添加Maven依赖

<!--swagger3-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

3. 添加Swagger配置类

import io.swagger.annotations.ApiOperation;
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.builders.ResponseBuilder;
import springfox.documentation.oas.annotations.EnableOpenApi;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

@EnableOpenApi
@Configuration
public class SwaggerConfig {

    @Bean
    public Docket createRestApi() {
        //swagger设置,基本信息,要解析的接口及路径等
        return new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInfo())
                .select()
                //设置通过什么方式定位需要自动生成文档的接口,这里定位方法上的@ApiOperation注解
                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                //接口URI路径设置,any是全路径,也可以通过PathSelectors.regex()正则匹配
                .paths(PathSelectors.any())
                .build();
    }

    //生成接口信息,包括标题、联系人,联系方式等
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Swagger3接口文档")
                .description("如有疑问,请联系")
                .contact(new Contact("Jonny", "https://www.baidu.com", "lwhou.hn@163.com"))
                .version("1.0")
                .build();
    }
}

4. 实体类使用Swagger

在接口类上添加@Api(tags = "操作接口"),tags的值是该类的作用,在文档页面会显示,value不会显示
在需要生成文档的接口上添加注解@ApiOperation
对请求参数添加@ApiParam
@ApiModel("角色持久化类")
@Data
@EqualsAndHashCode(callSuper=true)
public class SysRole extends DocEntity{

    @ApiModelProperty(value = "业务id")
    private String doctypeid;

    @ApiModelProperty(value = "所属分类id")
    private String classifyid;

    @ApiModelProperty(value = "角色名称")
    private String name;

    @ApiModelProperty(value = "角色描述")
    private String descr;
    
}

5. 控制器类使用Swagger

@Api(tags="角色接口")
@RestController
public class SysRoleController {
    
    @Autowired
    private SysRoleService sysRoleService;
    @Autowired
    private BaseSysService baseSysService;
    
    /**
     * 查询所有带分页角色管理
     * @param condition 查询条件对象
     * @return List<SysRoleParam>
     */
    @ApiOperation(value = "查询所有带分页角色") 
    @RequestMapping("/readAll")
    @PageableAnnotation
    public List<SysRoleParam> readAll(SysRoleParam condition){
        return sysRoleService.readAll(condition);
    }
    
    /**
     * 查询所有无分页角色管理
     * @param condition 查询条件对象
     * @return List<SysRoleParam>
     */
    @ApiOperation(value = "查询所有带分页角色") 
    @RequestMapping("/readAllNoPage")
    public List<SysRoleParam> readAllNoPage(SysRoleParam condition){
        return sysRoleService.readAll(condition);
    }
    
    /**
     * 查询单条角色管理
     * @param condition 查询条件对象
     * @return SysRoleParam
     */
    @ApiOperation(value = "查询单条角色")
    @GetMapping("/readOne")
    public SysRoleParam readOne(SysRoleParam condition) {
        return sysRoleService.readOne(condition);
    }
    
    /**
     * 查询单条角色管理
     * @param id 主键编号
     * @return SysRoleParam
     */
    @ApiOperation(value = "查询单条角色")
    @GetMapping("/readOneById")
    public SysRoleParam readOneById(String id) {
        return sysRoleService.readOneById(id);
    }
    
    /**
     * 添加角色管理
     * @param entityDto 添加对象
     * @return SysRoleParam
     */
    @ApiOperation(value = "添加角色") 
    @PostMapping("/add")
    public SysRoleParam add(@RequestBody SysRoleParam entityDto) {
        return sysRoleService.add(entityDto);
    }
    
    /**
     * 修改角色管理
     * @param entityDto 修改对象
     * @return void
     */
    @ApiOperation(value = "修改角色") 
    @PostMapping("/update")
    public void update(@RequestBody SysRoleParam entityDto) {
        sysRoleService.update(entityDto);
    }
    
    /**
     * 删除角色管理
     * @param entityDto 删除对象(delList包含多个对象主键集合)
     * @return void
     */
    @ApiOperation(value = "删除角色") 
    @PostMapping("/delete")
    public void delete(@RequestBody SysRoleParam condition){
        sysRoleService.delete(condition.getDelList());
    }
    
    /**
     * 拖拽排序
     * @param entityDto
     */
    @ApiOperation(value = "拖拽排序") 
    @PostMapping("updateDrag")
    public void dragSort(@RequestBody SysRoleParam entityDto) {
        sysRoleService.dragSort(entityDto);
    }
    
}

6. 成果展示

启动服务后,就可以查看在线文档了,本地服务的地址是http://localhost:8080/swagger-ui/index.html ,还可以通过Try it out 来测试。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表