SpringBoot Swagger2整合
阿新 • • 發佈:2019-02-18
Swagger簡介
Swagger是一款Restful介面的文件線上自動生成+功能測試的軟體。Swagger是一個規範和完整的框架。用於生成、描述、呼叫和視覺化Restful風格的Web服務。總體目標是使客戶端和檔案系統作為伺服器以同樣的速度 來更新。檔案的方法、引數和模型緊密整合到伺服器端的程式碼,允許API來始終保持同步。SpringBoot整合Swagger2
SpringBoot整合Swagger2只需要以下幾個步驟:Step1.匯入依賴:Step2.新建一個Swagger的配置類<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.7.0</version> </dependency>
Step3.使用Swagger2進行測試: 使用Swagger2進行測試的類我們選擇在controller層:package com.reset.config; 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; /** * Created by chendai on 2018/3/21. */ @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket docket(){ return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select() // 當前包路徑 .apis(RequestHandlerSelectors.basePackage("com.reset.controller")) .paths(PathSelectors.any()).build(); } //構建api文件的詳細資訊函式 private ApiInfo apiInfo(){ return new ApiInfoBuilder() //頁面標題 .title("springBoot測試使用Swagger2構建RESTful API") //建立人 .contact(new Contact("chendai","http://www.baidu.com","")) //版本號 .version("1.0") //描述 .description("API 描述") .build(); } }
開啟瀏覽器訪問“http://localhost:8080/swagger-ui.html”會看到如下的介面在輸入框中輸入id的值後點擊”Try it out“按鈕,我們可以檢視到下面的結果:package com.reset.controller; import com.reset.model.RestMessgae; import io.swagger.annotations.*; import org.springframework.web.bind.annotation.*; /** * Created by chendai on 2018/3/19. */ @RestController @Api("swaggerTestController相關api") public class TestController { /** * Restful Get請求測試 */ @ApiOperation(value = "根據id查詢學生的資訊",notes = "查詢資料庫中某個學生的資訊") @ApiImplicitParam(name ="id",value = "學生id",paramType = "path",required = true,dataType = "String") @ApiImplicitParams({ @ApiImplicitParam(name = "id",value = "使用者id",dataType = "String",paramType = "query",example = "1112") }) @ApiResponses({ @ApiResponse(code=400,message = "請求引數沒有填好"), @ApiResponse(code=404,message="請求路徑沒有找到") }) @GetMapping(value = "testRest/{id}") public RestMessgae testGetResetful(@PathVariable String id){ RestMessgae restMessgae = new RestMessgae(); System.out.println(id); return restMessgae; } }
這樣測試結果就非常的明顯了。
Swagger2註解說明
@Api():作用於類上,表示這個類是swagger的資源。 tags = ”說明該類的作用“@ApiOperation():用在請求的方法上,說明的方法的使用者和作用 value=“說明方法的用途、作用” notes="方法的備註說明“@ApiImplicitParams():用在請求的方法上,表示一組引數說明,可以包含多個@ApiImplicitParam()@ApiImplicitParam():指定一個請求引數的各個方面 name:引數名 value:引數的漢字說明 required:引數是否必須傳 dataType:引數型別 defaultValue:引數的預設值@ApiResponses():用在請求的方法上,表示一組響應。可以包含多個@ApiResponse()@ApiResponse():用於表示一個錯誤的響應資訊 code:數字 message:資訊 response:丟擲異常的類 @ApiModel():用在響應類上,表示一個返回響應資料的資訊。@ApiModelProperty():用在屬性上,描述響應類的屬性@ApiModel() 和 @ApiModelProperty() 使用示例如下:package com.reset.model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
* Created by chendai on 2018/3/21.
*/
@ApiModel(description = "返回響應資料")
public class RestMessgae {
@ApiModelProperty(value = "錯誤資訊")
private String message;
@ApiModelProperty(value = "狀態碼")
private String code;
@ApiModelProperty(value = "返回的資料")
private Object data;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
}