Spring Boot 集成swagger

176 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

swagger是一个自动生成接口文档和测试文档的工具 因为现在前后端分离的项目越来越多 所以项目中集成swagger也是十分方便的 而swagger集成到springboot中也是很简单的

首先 先在pom.xml中添加依赖

<dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>${swagger.version}</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>${swagger.version}</version>
        </dependency>

然后新建一个配置类

package com.zhong.share.work.configer;

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;

@Configuration
@EnableSwagger2
public class Swagger2Config {

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
                .select()
                //你的接口的根目录
                .apis(RequestHandlerSelectors.basePackage("com.zhong.share.work"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
    	 //生成的网站的标题和描述和网站信息
        return new ApiInfoBuilder().title("admin-swagger")
                .description("欢迎管理员")
                .contact(new Contact("", "", ""))
                .version("")
                .build();
    }

}

这样你的项目就集成了swagger了 而怎么使用呢 主要是通过注解来使用swagger

其中常使用的注解有以下几个

1.@Api(tags={"",""}),description = "" ps:接口的使用注解接口

@Api(tags = {"AdminControl","管理员控制器"},description = "管理员使用接口")
public class AdminControl {
}

效果图如下:

image.png

  1. @ApiOperation(value = "获取用户信息",notes = "接口提示信息") ps:接口里的方法使用注解接口
  @ApiOperation(value = "获取用户信息",notes = "接口提示信息")
    @GetMapping("/getUserInfo")
    public List<User> getUserInfo(){


        List<User> userList = userService.getUserInfo();

        return userList;
    }

效果图如下:

image.png

  1. @ApiParam(name = "用户编号",value = "id",required = true) ps:接口里的方法参数使用注解接口 这个必须要在方法参数前面使用
    @PostMapping("/deleteUser/{id}")
	/*
	 * @ApiParam 写在方法参数前面。用于对参数进行描述或说明是否为必填项等说明。 name:参数名称 value:参数描述 required:是否必填项
	 */
    public void deleteUser(@PathVariable("id") 
    @ApiParam(name = "用户编号",value = "id",required = true)int id) {

        userService.deleteUser(id);

    }

效果图如下:

image.png

4.@ApiModel(value = "用户实体", description = "User Entity") ps:实体类的使用接口

@ApiModel(value = "用户实体", description = "User Entity")
public class User implements UserDetails {
    private Integer id;
	/*
	 * @ApiModelProperty 可以用在方法或属性上。用于当对象作为参数时定义这个字段的内容。 value:描述 name:重写属性名
	 * required:是否是必须的 example:示例内容 hidden:是否隐藏
	 */
    private Boolean enabled;
    @ApiModelProperty(value = "用户的名称",name = "用户名",required = false,example = "钟宇强",hidden = false)

效果图如下:

image.png

  1. @ApiModelProperty(value = "用户的名称",name = "用户名",required = false,example = "钟宇强",hidden = false) ps:实体类的属性的使用接口
@ApiModelProperty(value = "用户的名称",name = "用户名",required = false,example = "钟宇强",hidden = false)
    private String username;

效果图如下:

image.png

页面图如下:

image.png