# Swagger
Swagger 是一個規范和完整的框架,用于生成、描述、調用和可視化 RESTful 風格的 Web 服務。
總體目標是使客戶端和文件系統作為服務器以同樣的速度來更新。文件的方法、參數和模型緊密集成到服務器端的代碼,允許 API 來始終保持同步。Swagger 讓部署管理和使用功能強大的 API 從未如此簡單。
*****
### pom.xml中引入maven
```
<!--swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.version}</version>
</dependency>
<!--swagger ui-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency>
<swagger.version>2.7.0</swagger.version>
```
*****
### 新建配置類
```
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket webApiConfig(){
return new Docket(DocumentationType.SWAGGER_2)
.groupName("webApi")
.apiInfo(webApiInfo())
.select()
.paths(Predicates.not(PathSelectors.regex("/admin/.*")))
.paths(Predicates.not(PathSelectors.regex("/error.*")))
.build();
}
private ApiInfo webApiInfo(){
return new ApiInfoBuilder()
.title("網站-課程中心API文檔")
.description("本文檔描述了課程中心微服務接口定義")
.version("1.0")
.contact(new Contact("Helen", "http://atguigu.com", "55317332@qq.com"))
.build();
}
}
```
*****
### 定義接口說明和參數說明
#### controller
```
@Api(tags = "講師管理")
@RestController
@RequestMapping("/eduservice/edu-teacher")
public class EduTeacherController {
@ApiOperation(value = "分頁帶條件查詢")
@PostMapping("pageTeacherCondition/{current}/{limit}")
public R pageTeacherCondition(@ApiParam(name = "current",value = "當前頁",required = true) @PathVariable Long current,
@ApiParam(name = "limit",value = "每頁數",required = true) @PathVariable Long limit,
@RequestBody(required = false) TeacherQuery teacherQuery){
//創建page對象
Page<EduTeacher> pageTeacher = new Page<>(current,limit);
QueryWrapper<EduTeacher> eduTeacherQueryWrapper = new QueryWrapper<>();
String name = teacherQuery.getName();
Integer level = teacherQuery.getLevel();
String begin = teacherQuery.getBegin();
String end = teacherQuery.getEnd();
if(!StringUtils.isEmpty(name)){
eduTeacherQueryWrapper.like("name",name);
}
if(!StringUtils.isEmpty(level)){
eduTeacherQueryWrapper.like("level",level);
}
if(!StringUtils.isEmpty(begin)){
eduTeacherQueryWrapper.like("name",begin);
}
if(!StringUtils.isEmpty(end)){
eduTeacherQueryWrapper.like("name",end);
}
IPage<EduTeacher> page = iEduTeacherService.page(pageTeacher, eduTeacherQueryWrapper);
long total = page.getTotal();
List<EduTeacher> records = page.getRecords();
return R.ok().data("page",page).data("total",total).data("records",records);
}
}
```
#### bean
```
@ApiModel(value = "Teacher查詢對象", description = "講師查詢對象封裝")
@Data
public class TeacherQuery {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "教師名稱,模糊查詢")
private String name;
@ApiModelProperty(value = "頭銜 1高級講師 2首席講師")
private Integer level;
@ApiModelProperty(value = "查詢開始時間", example = "2019-01-01 10:10:10")
private String begin;//注意,這里使用的是String類型,前端傳過來的數據無需進行類型轉換
@ApiModelProperty(value = "查詢結束時間", example = "2019-12-01 10:10:10")
private String end;
}
```
*****
### 結果測試
固定輸入地址為:http://127.0.0.1:port/swagger-ui.html
其中port為程序允許端口
打開后主頁為

點擊想測試的api,并輸入測試數據

點擊測試,觀察返回結果
