springboot利用swagger2.0構建api文件
阿新 • • 發佈:2019-01-23
樣例:
- pom.xml新增依賴
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version> </dependency> <!-- 介面API生成html文件 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.6.1</version> </dependency>
- 建立類Swagger2
與啟動類Application同級
package com.rmw.crawler.manage; 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; /** * @Description: springboot利用swagger構建api文件 * @Author: psw * @CreateDate: 2018/9/17 14:49 * @UpdateUser: psw * @UpdateDate: 2018/9/17 14:49 * @UpdateRemark: 修改內容 */ @Configuration @EnableSwagger2 public class Swagger2 { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() //"com.rmw.crawler.manage.controller", web層所在的目錄 .apis(RequestHandlerSelectors.basePackage("com.rmw.crawler.manage.controller")) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("springboot利用swagger構建api文件---資料來源管理系統") .description("簡單優雅的restfun風格") .termsOfServiceUrl("") .version("1.0") .build(); } }
- web中的controller中的方法上添加註解 如下圖:
常用註解: - @Api()用於類; 表示標識這個類是swagger的資源 - @ApiOperation()用於方法; 表示一個http請求的操作 - @ApiParam()用於方法,引數,欄位說明; 表示對引數的新增元資料(說明或是否必填等) - @ApiModel()用於類 表示對類進行說明,用於引數用實體類接收 - @ApiModelProperty()用於方法,欄位 表示對model屬性的說明或者資料操作更改 - @ApiIgnore()用於類,方法,方法引數 表示這個方法或者類被忽略 - @ApiImplicitParam() 用於方法 表示單獨的請求引數 - @ApiImplicitParams() 用於方法,包含多個 @ApiImplicitParam 具體使用舉例說明: @Api() 用於類;表示標識這個類是swagger的資源 tags–表示說明 value–也是說明,可以使用tags替代
程式碼:
package com.rmw.crawler.manage.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import com.rmw.crawler.manage.bean.DataSource;
import com.rmw.crawler.manage.service.SourceService;
import com.rmw.dubbo.api.CrawlerSourceInterface;
import com.rmw.dubbo.entity.*;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @Description: source資料來源相關操作
* @Author: psw
* @CreateDate: 2018/9/20 17:39
* @UpdateUser: psw
* @UpdateDate: 2018/9/20 17:39
* @UpdateRemark: 修改內容
*/
@RestController
@RequestMapping("/source")
public class SourceController {
public static Logger log = LoggerFactory.getLogger(SourceController.class);
//@Reference(version = "1.0.0")
@Autowired
private CrawlerSourceInterface sourceService;
/**
* http://localhost:8080/crawler-manage/swagger-ui.html#/
* 功能描述: 獲取資料來源列表資訊(無分頁)
* @auther: psw
* @param:
* @return:
* @exception
* @date: 2018/9/17 16:35
*/
@ApiOperation(value="獲取資料來源列表資訊", notes="獲取資料來源列表")
@RequestMapping(value = "/find/all",method= RequestMethod.GET)
public List<CrawlerSource> find(SourceVo sourceVo){
List<CrawlerSource> sourceList = sourceService.findAll(sourceVo);
log.info("獲取資料來源列表資訊結果:{}",sourceList);
return sourceList;
}
/**
* 無引數
* @return
*/
@RequestMapping(value = "/find/list",method= RequestMethod.GET)
public List<CrawlerSource> finds(){
List<CrawlerSource> sourceList = sourceService.findList();
log.info("獲取資料來源列表資訊結果:{}",sourceList);
return sourceList;
}
/**
*
* 功能描述: 根據sourceId來獲取資料來源詳細資訊
* @auther: psw
* @param:
* @return:
* @exception
* @date: 2018/9/17 16:36
*/
@ApiOperation(value="根據sourceId獲取資料來源詳細資訊", notes="根據sourceId來獲取資料來源詳細資訊")
@ApiImplicitParam(name = "sourceId", value = "資料來源ID", required = true, dataType = "Integer", paramType = "path")
@RequestMapping(value = "/get/{sourceId}",method= RequestMethod.GET)
public Result findBySourceId(@PathVariable Integer sourceId){
log.info("根據sourceId來獲取資料來源詳細資訊,sourceId:{}",sourceId);
CrawlerSource dataSource = sourceService.getSource(sourceId);
log.info("sourceId:{},資料來源詳細資訊:{}",sourceId,dataSource);
return Result.success(dataSource);
}
/**
* 根據條件分頁查詢資料來源
* @param sourceVo
* @param pageNo
* @param pageSize
* @return
*/
@ApiOperation(value="根據條件分頁查詢", notes="根據條件分頁查詢獲取資料來源詳細資訊")
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNo", value = "頁碼", required = true, dataType = "int", paramType = "query"),
@ApiImplicitParam(name = "pageSize", value = "每頁數量", required = true, dataType = "int", paramType = "query"),
@ApiImplicitParam(name = "sourceVo", value = "查詢引數", required = false, dataType = "SourceVo")
})
@RequestMapping(value = "/get/page",method= RequestMethod.GET)
public Result findBySourceVo(SourceVo sourceVo, int pageNo, int pageSize){
log.info("根據條件分頁查詢,查詢引數:{}", sourceVo);
PageModel<CrawlerSource> sourcePageModel = sourceService.findPagerByCondition(sourceVo,pageNo, pageSize);
log.info("根據條件分頁查詢,查詢結果:{}", sourcePageModel);
return Result.success(sourcePageModel);
}
/**
* 新增資料來源
* @param dataSource
* @return
*/
@ApiOperation(value="新增資料來源", notes="新增資料來源")
@ApiImplicitParams({
@ApiImplicitParam(name = "dataSource", value = "新增資料來源", required = true, dataType = "CrawlerSource")
})
@RequestMapping(value = "/save",method= RequestMethod.POST)
public Result saveSource(@RequestBody @Validated CrawlerSource dataSource, BindingResult bindingResult){
if (bindingResult.hasErrors()) {
return Result.error(Code.INVALID_PARAMETER);
}
log.info("新增資料來源:{}",dataSource);
Result data = sourceService.insert(dataSource);
return data;
}
/**
* 更新資料來源
* @param dataSource
* @return
*/
@ApiOperation(value="編輯資料來源", notes="編輯資料來源")
@RequestMapping(value = "/update",method= RequestMethod.POST)
public Result updateSource(@RequestBody CrawlerSource dataSource){
log.info("更新資料來源:{}",dataSource);
sourceService.update(dataSource);
return Result.success(Code.OK);
}
/**
* 刪除資料來源
* @param dataSource
* @return
*/
@ApiOperation(value="刪除資料來源", notes="刪除資料來源")
@RequestMapping(value = "/delete",method= RequestMethod.POST)
public Result deleteSource(@RequestBody CrawlerSource dataSource){
log.info("刪除資料來源:{}",dataSource);
sourceService.deleteSource(dataSource);
return Result.success(Code.OK);
}
/**
* 開啟關閉
* @param dataSource
* @return
*/
@ApiOperation(value="開啟/關閉資料來源", notes="開啟/關閉資料來源")
@RequestMapping(value = "/switch",method= RequestMethod.POST)
public Result startOrStop(@RequestBody CrawlerSource dataSource){
log.info("開啟/關閉資料來源:{}",dataSource);
sourceService.startOrStop(dataSource);
return Result.success(Code.OK);
}
}