@EnableOpenApi

该注解添加在Spring Boot项目的启动类上,然后在整个项目上使用Swagger3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package com.ledao;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import springfox.documentation.oas.annotations.EnableOpenApi;

/**
* @author LeDao
*/
@EnableOpenApi
@SpringBootApplication
public class SwaggerTestApplication {

public static void main(String[] args) {
SpringApplication.run(SwaggerTestApplication.class, args);
}

}

@Api

添加在Controller类上,有两个参数:

  1. tags:说明该类的作用,可以在UI界面上看到的注解
  2. value:该参数没什么意义,在UI界面上也看到,所以不需要配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.ledao.controller;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
* 首页Controller
*
* @author LeDao
* @company
* @create 2021-10-05 17:35
*/
@Api(tags = "首页Controller")
@Controller
public class IndexController {

}

@ApiOperation

添加在在Controller类的方法上,有两个参数:

  1. value:说明方法的用途、作用
  2. notes:方法的备注说明
1
2
3
4
5
6
@ApiOperation(value = "跳转到首页")
@ResponseBody
@GetMapping("/")
public String root() {
return "<a href='http://localhost:8080/student/delete?id=2'>删除学生</a>";
}

@ApiImplicitParams

用在请求的方法上,表示一组参数说明,结合注解@ApiImplicitParam一起使用

@ApiImplicitParam

该注解用在@ApiImplicitParams内,该注解的参数如下:

  1. name:参数名

  2. value:参数的汉字说明、解释

  3. required:参数是否必须传

  4. paramType:参数放在哪个地方

    .header 请求参数的获取:@RequestHeader

    .query 请求参数的获取:@RequestParam

    .path 用于restful接口,请求参数的获取:@PathVariable

    .div 不常用

    .form 不常用

  5. dataType:参数类型,默认String,其它值dataType="Integer"

  6. defaultValue:参数的默认值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* 添加学生
*
* @param id
* @param name
* @param age
* @return
*/
@ApiOperation(value = "添加学生")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "编号", required = true),
@ApiImplicitParam(name = "name", value = "姓名", required = true),
@ApiImplicitParam(name = "age", value = "年龄", required = true)
})
@GetMapping("/add")
public Student add(Integer id, String name, Integer age) {
return new Student(id, name, age);
}

@ApiResponses

用在请求的方法上,表示一组响应码,结合注解@ApiResponse一起使用

@ApiResponse

用在@ApiResponses中,一般用于表达一个错误的响应信息,参数如下:

  1. code:数字,例如400
  2. message:信息,例如”请求参数没填好“
  3. response:抛出异常的类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* 添加学生
*
* @param id
* @param name
* @param age
* @return
*/
@ApiOperation(value = "添加学生")
@ApiResponses({
@ApiResponse(code = 408, message = "指定业务得报错信息,返回客户端"),
@ApiResponse(code = 400, message = "请求参数没填好"),
@ApiResponse(code = 404, message = "请求路径没有或页面跳转路径不对")
})
@GetMapping("/add")
public Student add(Integer id, String name, Integer age) {
return new Student(id, name, age);
}

@ApiModel

用于实体类上,表示一个返回响应数据的信息,参数value填该实体类的作用

这种一般用在post创建的时候,使用@RequestBody这样的场景,请求参数无法使用@ApiImplicitParam注解进行描述的时候

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.ledao.entity;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
* 学生实体类
*
* @author LeDao
* @company
* @create 2021-10-05 16:59
*/
@ApiModel(value = "学生实体类")
public class Student {

}

@ApiModelProperty

该注解添加在实体类的属性上,描述实体类的属性,参数value填参数的作用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.ledao.entity;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
* 学生实体类
*
* @author LeDao
* @company
* @create 2021-10-05 16:59
*/
@ApiModel(value = "学生实体类")
public class Student {

/**
* 编号
*/
@ApiModelProperty(value = "编号")
private Integer id;
/**
* 姓名
*/
@ApiModelProperty(value = "姓名")
private String name;
/**
* 年龄
*/
@ApiModelProperty(value = "年龄")
private Integer age;
}