swagger2的作用:接口测试,和postman和apifox等接口测试工具差不多
1.导入swagger2的maven依赖
<!--swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</dependency>
2.编写swagger2配置类,注册Docket
package com.atguigu.ggkt.config.swagger2;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class Swagger2Config {
@Bean
public Docket webApiConfig(){
return new Docket(DocumentationType.SWAGGER_2)
//分组名
.groupName("ggkt")
//接口文档信息
.apiInfo(webApiInfo())
.select()
//只显示api路径下的页面
//.paths(Predicates.and(PathSelectors.regex("/api/.*")))
.build();
}
private ApiInfo webApiInfo(){
return new ApiInfoBuilder()
//文档标题
.title("网站-API文档")
//文档的描述信息
.description("本文档描述了网站微服务接口定义")
//接口文档版本号
.version("1.0")
//添加联系人
.contact(new Contact("atguigu", "http://atguigu.com", "atguigu.com"))
.build();
}
}
3.让启动类扫描Swagger2配置类,将bean注入到容器
package com.atguigu.ggkt.vod;
import com.atguigu.ggkt.config.swagger2.Swagger2Config;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Import;
@SpringBootApplication
@MapperScan(basePackages = "com.atguigu.ggkt.vod.mapper")
@Import(Swagger2Config.class)
public class VODApplicationMain {
public static void main(String[] args) {
SpringApplication.run(VODApplicationMain.class);
}
}
4.在Controller中编写Swagger2注释。@Api用于类上、@ApiOperation用于处理器方法上,@ApiParam用在参数上。
package com.atguigu.ggkt.vod.controller;
import com.atguigu.ggkt.model.vod.Teacher;
import com.atguigu.ggkt.vod.service.TeacherService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* <p>
* 讲师 前端控制器
* </p>
*
* @author atguigu
* @since 2024-06-06
*/
@Api(tags = "讲师接口")
@RestController
@RequestMapping("/vod/teacher")
public class TeacherController {
@Autowired
private TeacherService teacherService;
@ApiOperation("查找全部教师")
@GetMapping("/findAll")
public List<Teacher> findAll(){
return teacherService.list();
}
@ApiOperation("根据id删除讲师")
@DeleteMapping("/remove/{id}")
public boolean removeTeacherById(@ApiParam(name = "id", value = "ID", required = true) @PathVariable("id") Integer id){
return teacherService.removeById(id);
}
}
5.在实体类中编写swagger2注解。@ApiModel用在实体类上,@ApiModelProperty用在属性上。
package com.atguigu.ggkt.model.vod;
import com.atguigu.ggkt.model.base.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
@ApiModel(description = "Teacher")
@TableName("teacher")
public class Teacher extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "讲师姓名")
@TableField("name")
private String name;
@ApiModelProperty(value = "讲师简介")
@TableField("intro")
private String intro;
@ApiModelProperty(value = "讲师资历,一句话说明讲师")
@TableField("career")
private String career;
@ApiModelProperty(value = "头衔 1高级讲师 2首席讲师")
@TableField("level")
private Integer level;
@ApiModelProperty(value = "讲师头像")
@TableField("avatar")
private String avatar;
@ApiModelProperty(value = "排序")
@TableField("sort")
private Integer sort;
@ApiModelProperty(value = "入驻时间")
@JsonFormat(pattern = "yyyy-MM-dd")
@TableField("join_date")
private Date joinDate;
}
6,访问http://localhost:8301/swagger-ui.htm进行接口测试