Swagger2整合springBoot,自動生成API介面文件
阿新 • • 發佈:2018-11-07
Swagger2整合springBoot
首先匯入jar包
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>io.springfox< /groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.8.0</version>
</dependency>
注意:我一開始匯入的是2.7.0jar包,訪問swagger頁面,圖片載入不出來。後面找了半天沒找到原因,應該是jar包裡面的靜態資源損壞了,索性換了2.8.0就好了
新建config
@Configuration
@EnableSwagger2
public class SwaggerConfiguration extends WebMvcConfigurationSupport {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
//為當前包路徑
.apis(RequestHandlerSelectors.basePackage("com.mochu.ferp.erp.controller" ))
.paths(PathSelectors.any())
.build();
}
//構建 api文件的詳細資訊函式,注意這裡的註解引用的是哪個
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
//頁面標題
.title("ERP介面文件說明")
//建立人
.contact(new Contact("吳彥祖","","[email protected]"))
//版本號
.version("1.0")
//描述
.description("聯絡人")
.build();
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
super.addResourceHandlers(registry);
}
}
注意 :很多人就是沒有新增靜態資源對映,重寫WebMvcConfigurationSupport 類的addResourceHandlers 方法,指定靜態資源的位置。
啟動專案,訪問Swagger2頁面
開始 :訪問 http://localhost:8080/swagger-ui.html ,埠號即為自己專案的埠
config的 apiInfo 方法對介面上內容進行設定,這些沒多大用,大家知道就好。
給類加上註解,實現自動生成API
常用註解:
- @Api()用於類;
表示標識這個類是swagger的資源 - @ApiOperation()用於方法;
表示一個http請求的操作 - @ApiParam()用於方法,引數,欄位說明;
表示對引數的新增元資料(說明或是否必填等) - @ApiModel()用於類
表示對類進行說明,用於引數用實體類接收 - @ApiModelProperty()用於方法,欄位
表示對model屬性的說明或者資料操作更改 - @ApiIgnore()用於類,方法,方法引數
表示這個方法或者類被忽略 - @ApiImplicitParam() 用於方法
表示單獨的請求引數 - @ApiImplicitParams() 用於方法,包含多個 @ApiImplicitParam
@ApiImplicitParam 的 paramType屬性註解解釋
屬性 | 取值 | 作用 |
---|---|---|
paramType | 對應請求引數型別 | |
path | 以地址的形式提交資料 | |
query | 直接跟引數完成自動對映賦值 | |
body | 引數在請求體裡面 | |
form | 以form表單的形式提交 僅支援POST | |
header | 引數在request headers 裡邊提交 |
//控制層上註解
@RestController
@RequestMapping("/archives")
@Api(tags="檔案管理類")
public class ArchivesController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@GetMapping("/abc")
@ApiOperation(value="獲取訂單", notes="提交一組識別的標籤id,返回生成的訂單詳情")
public ResultVO get(@ApiParam(name="id",value="優惠券物件") @RequestParam(name = "id") String id){
return ResultVOUtil.success();
}
@PostMapping("/edf")
@ApiOperation(value="修改訂單", notes="提交一組識別的標籤id,返回生成的訂單詳情")
public ResultVO post(@ApiParam(name="coupon",value="優惠券物件") @RequestBody Coupon coupon){
return ResultVOUtil.success(coupon);
}
@ApiImplicitParams({
@ApiImplicitParam(name="name",value="使用者名稱",dataType="string", paramType = "query",example="xingguo"),
@ApiImplicitParam(name="id",value="使用者id",dataType="long", paramType = "query")})
@PostMapping("/hig")
public ResultVO post(@ApiParam(hidden = true)@RequestBody Order order){
return ResultVOUtil.success(order);
}
}
//模型表上註解
@Data //lombok外掛的註解,自動生成get,set方法
@ApiModel(value="ResultVO",description = "http請求返回的最外層物件")
public class ResultVO<T> {
/** 錯誤碼. */
@ApiModelProperty(value="返回碼",name="code")
private Integer code;
/** 提示資訊. */
@ApiModelProperty(value="提示資訊",name="msg")
private String msg;
/** 具體內容. */
@ApiModelProperty(value="具體內容",name="data")
private T data;
}
頁面顯示
注意 :如果方法採用@RequesMapping 註解必須指定方法型別,GET,POST等,否則出現多條API記錄。
這是swagger自動生成的API文件,點選try it out 可以模擬請求,類似postman功能。
自動API生成就這樣子了。可以把路徑給前端,讓前端自己閱讀了,省下我們編寫API的時間。哈哈