springboot 集成 swagger2
在根目录下新建swagger目录,并新建swagger2类,将java代码复制过去,并修改包要扫描的路径与个人信息
pom
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
配置类
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.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
//swagger2的配置文件,在项目的启动类的同级文件建立
@Configuration
@EnableSwagger2
//是否开启swagger,正式环境一般是需要关闭的(避免不必要的漏洞暴露!),可根据springboot的多环境配置进行设置
//@ConditionalOnProperty(name = "swagger.enable", havingValue = "true")
public class Swagger2 {
//这里写要扫描的api接口的包的路径
public static final String SWAGGER_SCAN_BASE_PACKAGE = "com.cnooc.dictionary.controller";
//这里写版本号
public static final String VERSION = "1.0.0";
// 创建人信息 名称
public static final String PERSON = "Mr.Z";
// 创建人信息 链接
public static final String URL = "http://www.baidu.com";
// 创建人信息 邮箱
public static final String EMAIL = "haha@qq.com";
// 此文档的描述
public static final String DESCRIPTION = "API 描述";
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
// 为当前包路径
.apis(RequestHandlerSelectors.basePackage(SWAGGER_SCAN_BASE_PACKAGE)).paths(PathSelectors.any())
.build();
}
// 构建 api文档的详细信息函数,注意这里的注解引用的是哪个
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
// 页面标题
.title("专业词典RESTful API")
// 创建人信息
.contact(new Contact(PERSON, URL, EMAIL))
// 版本号
.version(VERSION)
// 描述
.description(DESCRIPTION)
.build();
}
}
VO类
实体类只和数据库交互,不需要加,只加与前端交互的类即可
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ApiModel("用户模型")
public class User{
@ApiModelProperty(value = "用户名称", name = "userName", example = "zzz")
private String userName;
@ApiModelProperty(value = "年龄", name = "age", example = "1")
private int age;
}
接口方法
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
@RestController
@RequestMapping("/adminApi")
@Api(tags = "管理员类接口")
public class AdminController {
//传多个参数
@GetMapping(value = "/getAllEntry")
@ApiImplicitParams({
@ApiImplicitParam(name="page",value="当前页码",required=true,paramType="query",dataType = "int",example = "1"),
@ApiImplicitParam(name="size",value="每页个数",required=true,paramType="query",dataType = "int",example = "10"),
@ApiImplicitParam(name="approveState",value="词条状态",required=true,paramType="query",dataType = "int",example = "0")
})
@ResponseBody
@ApiOperation(value = "管理员-分页查询词条",notes = "approveState[1,2],1是待审批,2是审批通过")
public Result getAllApprovedEntry(int page, int size, int approveState){
PageHelper.startPage(page,size,"id desc");
List<DictionaryEntry> list = dictionaryEntryService.findEntryByApproveState(approveState);
return list.size()>0?Result.success("查询成功",list):Result.success("查询到0条",list);
}
//传单个参数
@GetMapping(value = "/findEntryByClassify")
@ApiOperation(value = "共用-根据分类查询所有词条",notes = "根据分类查询所有词条")
@ApiImplicitParam(name = "entryClassify",value = "词条分类",paramType = "query",required = true,dataType = "int",example = "1")
@ResponseBody
public Result findEntryByClassify(int entryClassify){
List<DictionaryEntry> list = dictionaryEntryService.findEntryByClassify(entryClassify);
return list.size()>0?Result.success("根据分类查询词条成功",list):Result.success("根据分类查询到0条词条",0);
}
//传对象
@PutMapping("/addEntry")
@ResponseBody
@ApiOperation(value = "共用-新增词条",notes = "approveState(0草稿,1待审批,2审批通过)")
public Result addEntry(@ApiParam(name = "entryInsertBean",value = "新增词条模型",required = true) @RequestBody EntryInsertBean entryInsertBean){
if(entryInsertBean == null){
throw new IllegalArgumentException("entryInsertBean must not be null");
}
DictionaryEntry dictionaryEntry = new DictionaryEntry();
dictionaryEntry.setEntryName(entryInsertBean.getEntryName());
dictionaryEntry.setEntryContentCh(entryInsertBean.getEntryContentCh());
dictionaryEntry.setEntryContentEn(entryInsertBean.getEntryContentEn());
dictionaryEntry.setEntryForshortEn(entryInsertBean.getEntryForshortEn());
dictionaryEntry.setEntryCreatorId(entryInsertBean.getEntryCreatorId());
dictionaryEntry.setEntryCreatorAccount(entryInsertBean.getEntryCreatorAccount());
dictionaryEntry.setEntryClassify(entryInsertBean.getEntryClassify());
dictionaryEntry.setApproveState(entryInsertBean.getApproveState());
dictionaryEntry.setEntryRemark(entryInsertBean.getEntryRemark());
//新增的时候设置当前系统时间
dictionaryEntry.setCreateTime(new Date());
dictionaryEntry.setModifyTimes(0);
int i = dictionaryEntryService.addDictionaryEntry(dictionaryEntry);
if(i > 0){
return Result.success("新增词条成功",null);
}
return Result.error(0,"新增词条失败",dictionaryEntry);
}
}