SpringBoot使用Swagger2
- 1.引入swagger依赖
- 2.添加swagger配置类
- 3.测试Controller
- 4.测试
- 5.swagger的注解
- Api注解
- ApiOperation注解
- ApiImplicitParam、ApiImplicitParams注解
- ApiParam注解
- ApiResponse、ApiResponses注解
- ResponseHeader注解
- ApiModel、ApiModelProperty注解
- 6.更多
1.引入swagger依赖
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.9.2</version></dependency>
2.添加swagger配置类
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.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;@Configuration
@EnableSwagger2
public class SwaggerConfig {@Beanpublic Docket createRestApi(){return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()//swagger文档扫描的包,这里扫描的是全部//如果扫描指定包下的可以这样写//.apis(RequestHandlerSelectors.basePackage("com.xxx.yyy.controller")).apis(RequestHandlerSelectors.any()).paths(PathSelectors.any()).build();}private ApiInfo apiInfo(){return new ApiInfoBuilder().title("标题").description("描述").version("版本").termsOfServiceUrl("公司网址").build();}}
3.测试Controller
@RestController
@RequestMapping("/test")
public class TestController {@GetMapping("/test01")public String test01(){return "test01";}@GetMapping("/test02")public String test02(){return "test02";}@GetMapping("/test03")public String test03(){return "test03";}}
4.测试
项目正常启动后浏览器输入网址
http://localhost:8100/swagger-ui.html#/
(这里的端口填写自己服务的端口,我的是8100,默认端口8080)
测试结果
5.swagger的注解
上面就是swagger的基本使用
但swagger也提供了一些注解,这里例举一些常用注解
Api注解
用于标记当前类为Swagger的文档资源。其中含有几个常用属性,分别说明如下。
• value:定义当前接口文档的名称。
• description:用于定义当前接口文档的介绍。
@Api(value = "controller接口",description = "用户测试接口")
public class TestController {
ApiOperation注解
@ApiOperation用在接口的方法上,主要用来注解请求接口。其中包含几个常用属性,分别说明如下。
• value:对API的简短描述。
• note:API的有关细节描述。
• hidden:如果值为true,就会在文档中隐藏。
演示
@GetMapping("/test01")@ApiOperation(value = "测试方法01",notes = "细节的描述,细节的测试",hidden = false)public String test01(){return "test01";}
ApiImplicitParam、ApiImplicitParams注解
使用在API请求方法上,@ApiImplicitParams的子集是@ApiImplicitParam注解,其中@ApiImplicitParam注解常用参数。
• name:参数的名称。
• value:参数值。
• required:如果值为true,就是必传字段。
• defaultValue:参数的默认值。
• dataType:数据的类型。
演示
@GetMapping("/test02")@ApiImplicitParams(value = {@ApiImplicitParam(name = "name",value = "测试姓名",required = false,defaultValue = "默认姓名李四"),@ApiImplicitParam(name = "age",value = "测试年龄",required = false,dataType = "Integer",defaultValue = "200")})public String test02(String name,Integer age){return "test02 姓名:"+name+" 年龄:"+age;}
ApiParam注解
ApiParam用于方法的参数,其中包含以下几个常用属性。
• name:参数的名称。
• value:参数值。
• required:如果值为true,就是必传字段。
• defaultValue:参数的默认值。
• type:参数的类型。
• hidden:如果值为true,就隐藏这个参数。
与ApiImplicitParam、ApiImplicitParams注解类似,不再赘述。
ApiResponse、ApiResponses注解
@ApiResponses和@ApiResponse二者配合使用返回HTTP状态码。@ApiResponses的value值是@ApiResponse的集合,多个@ApiResponse用逗号分隔。其中,@ApiResponse常用参数如下。
• code:HTTP状态码。
• message:HTTP状态信息。
• responseHeaders:HTTP响应头。
演示
@GetMapping("/test03")@ApiResponses(value = {@ApiResponse(code = 200,message = "成功"),@ApiResponse(code = 404,message = "异常")})public String test03(){return "test03";}
ResponseHeader注解
如果需要设置响应头,就将@ResponseHeader设置到@ApiResponse的responseHeaders参数中。@ResponseHeader提供了以下几个参数。
• name:响应头名称。
• description:响应头描述。
ApiModel、ApiModelProperty注解
设置API响应的实体类,用作API返回对象。@ApiModel常用参数。
• value:实体类名称。
• description:实体类描述。
设置API响应实体的属性,其中常用参数。
• name:属性名称。
• value:属性值。
演示
@ApiModel(value = "Student(学生类)",description = "记录学生个人信息")
public class Student {public String name;@ApiModelProperty(name = "age",value = "年龄")public Integer age;
}
6.更多
本文总结粗略
更多详细使用参照swagger官网
官方网站:https://swagger.io/
官方文档:https://swagger.io/docs/