1、引入依赖

  1. <!-- swagger 依赖jar -->
  2. <dependency>
  3. <groupId>io.springfox</groupId>
  4. <artifactId>springfox-swagger2</artifactId>
  5. <version>2.9.2</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>io.springfox</groupId>
  9. <artifactId>springfox-swagger-ui</artifactId>
  10. <version>2.9.2</version>
  11. </dependency>

2、添加swagger配置文件

  1. package com.xja.config;
  2. import org.springframework.context.annotation.Bean;
  3. import org.springframework.context.annotation.Configuration;
  4. import springfox.documentation.builders.ApiInfoBuilder;
  5. import springfox.documentation.builders.PathSelectors;
  6. import springfox.documentation.builders.RequestHandlerSelectors;
  7. import springfox.documentation.service.ApiInfo;
  8. import springfox.documentation.service.Contact;
  9. import springfox.documentation.spi.DocumentationType;
  10. import springfox.documentation.spring.web.plugins.Docket;
  11. import springfox.documentation.swagger2.annotations.EnableSwagger2;
  12. @EnableSwagger2
  13. @Configuration
  14. public class Swagger2Config {
  15. @Bean
  16. public Docket createRestApi() {
  17. /**
  18. // 添加请求参数,我们这里把token作为请求头部参数传入后端
  19. ParameterBuilder parameterBuilder = new ParameterBuilder();
  20. List<Parameter> parameters = new ArrayList<>();
  21. parameterBuilder.name("token").description("令牌")
  22. .modelRef(new ModelRef("string")).parameterType("header").required(false).build(); //header中的token参数非必填,传空也可以
  23. parameters.add(parameterBuilder.build());
  24. */
  25. return new Docket(DocumentationType.SWAGGER_2)
  26. .apiInfo(apiInfo())
  27. .select()
  28. //为当前包路径
  29. .apis(RequestHandlerSelectors.basePackage("edu.xja.controller"))
  30. .paths(PathSelectors.any())
  31. .build();
  32. //.build().globalOperationParameters(parameters);
  33. }
  34. //构建 api文档的详细信息函数
  35. private ApiInfo apiInfo() {
  36. return new ApiInfoBuilder()
  37. //页面标题
  38. .title("Spring Boot集成Swagger2构建RESTful API")
  39. //创建人
  40. .contact(new Contact("Thomas", "http://www.nynu.edu.cn", "thomas@163.com"))
  41. //版本号
  42. .version("1.9")
  43. //描述
  44. .description("演示系统API描述")
  45. .build();
  46. }
  47. }

注意事项:上面代码Contact 类引入的是:

  1. import springfox.documentation.service.Contact;

代码解释:
Ø 通过@EnableSwagger2 注解开启swagger2
Ø 要配置一个Docket Bean
Ø 在.apis 方法中配置扫描controller的位置
Ø apinInfo方法中设置文档的基本信息,比如标题、联系人、版本、描述等

打开浏览器,地址栏中输入:localhost:8888/swagger-ui.html
image.png
注:若启动不了,尝试在application启动类上加入注解@EnableSwagger2

3、Swagger主要注解

3.1、@Api

@Api 用在类上,说明该类的作用。可以标记一个Controller类做为swagger 文档资源
最重要是属性是tags,示例:

  1. @Api(tags ={"学生管理Api"})

3.2、@ApiModel

@ApiModel用在类上,表示对类进行说明,用于实体类中的参数接收说明
最重要的属性如下,示例:

  1. @ApiModel(value="学生实体类",description = "学生实体类信息")

3.3、@ApiModelProperty

@ApiModelProperty()用于字段,表示对model属性的说明最重要的属性,示例:

  1. @ApiModelProperty(value="学生姓名",required = true)

3.4、@ApiParam

@ ApiParam用于Controller中方法的参数说明

3.5、@ApiOperation

@ApiOperation用在Controller里的方法上,说明方法的作用,每一个接口的定义,使用方式如下:

  1. @ApiOperation(value="根据主键获取学生信息",notes="输入学生主键,获取学生信息")

3.6、@ApiResponse和ApiResponses

  1. @ApiImplicitParams({@ApiImplicitParam(value="主键ID",name="id")})

image.png