目录
Swagger的简单介绍
在开发中往往是前后端分离的。作为后端人员在前端还没开发的时候怎么测试呢?
Swagger可以自动生成测试页面。Swagger主要就是生成接口文档方便前后端的开发。
依赖包
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.5.0</version>
</dependency>
<!--测试页面生成-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.5.0</version>
</dependency>
启动类
在启动类上加上@EnableSwagger2注解
@EnableSwagger2
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@Api
作用在类上。一般是使用在controller类上如下图
启动项目
现在启动项目输入项目地址如项目的端口是8088:对应的URL就是http://localhost:8088/swagger-ui.html#/
@ApiOperation
@ApiOperation作用在方法上。
@GetMapping("/demo")
@ApiOperation(value = "测试value",notes = "测试notes")
public String demo(@RequestParam String id){
System.out.println("收到demoid="+id);
return "demo";
}
刷新页面点进去可以看到
@ApiParam
value 是对参数的说明
name 是参数名
required 该参数是不是必须填
该注解的allowableValues属性是可选值逗号分开可以配多个 ,如下
@GetMapping("/demo")
@ApiOperation(value = "测试value",notes = "测试notes")
public String demo(@ApiParam(value = "主键",allowableValues = "11,22",name = "id")@RequestParam(value = "id",required = true) String id){
System.out.println("收到demoid="+id);
return "demo";
}
效果如下
json格式提交
@ApiOperation(value = "测试提交对象json",notes = "测试提交对象json--notes")
@PostMapping("save/excel01")
public ReportExcel save(@ApiParam(value = "ReportExcel对象") @RequestBody ReportExcel reportExcel){
//ReportExcel是实体类
System.out.println(reportExcel);
return reportExcel;
}
效果图
@ApiImplicitParams
@ApiImplicitParams:用在请求的方法上,包含一组参数说明
@ApiImplicitParams:用在请求的方法上,包含一组参数说明
@ApiImplicitParam:用在 @ApiImplicitParams 注解中,指定一个请求参数的配置信息
name:参数名
value:参数的汉字说明、解释
required:参数是否必须传
paramType:参数放在哪个地方
· header --> 请求参数的获取:@RequestHeader
· query --> 请求参数的获取:@RequestParam
· path(用于restful接口)–> 请求参数的获取:@PathVariable
· body(不常用)
· form(不常用)
dataType:参数类型,默认String,其它值dataType=“Integer”
defaultValue:参数的默认值
@ApiOperation(value = "测试ApiImpliciParam",notes = "测试ApiImpliciParam注解")
@GetMapping("/testApiImpliciParam")
@ApiImplicitParams({
@ApiImplicitParam(name = "name",value = "姓名",example = "小明",paramType = "query",defaultValue = "xiaoming",dataType = "String"),
@ApiImplicitParam(name = "id",value = "主键",example = "小明id",paramType = "query",defaultValue = "xiaomingzj",dataType = "String")
})
public String testApiImpliciParam(@RequestParam(value = "name") String name,@ApiParam(value = "主键",example = "123") @RequestParam(value = "id") String id){
return "success";
}
和@ApiParam效果差不多
@ApiModel和 @ApiModelProperty
作用在实体类中
@ApiModel:用于响应类上,表示一个返回响应数据的信息
(这种一般用在post创建的时候,使用@RequestBody这样的场景,
请求参数无法使用@ApiImplicitParam注解进行描述的时候)
@ApiModelProperty:用在属性上,描述响应类的属性
@ApiModelProperty中example属性可以理解为默认值
效果图
还是实习生,如果有误导多多包涵