swagger2配置及相關注解說明
阿新 • • 發佈:2018-11-13
- 加入依賴
<!-- swagger --> <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>
- 配置swagger
@Configuration public class SwaggerConfig { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("cn.test.controller")) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("測試-練習工程") .version("1.0.1") .description("測試swagger") .build(); } }
- 啟用swagger
@EnableSwagger2
@SpringBootApplication
public class XxxApplication {
public static void main(String[] args) {
SpringApplication.run(XxxApplication.class, args);
}
}
- 以下三個方法均為重寫 RequestHandlerSelectors 中的 3 個方法,使之支援多包掃描,如果重寫了以下3個方法,則需要覆蓋掉SwaggerConfig配置中的RequestHandlerSelectors.basePackage(“cn.test.controller”)改為有以下方法掃描
private static Predicate<RequestHandler> basePackage(final String basePackage) {
return input -> (Boolean) declaringClass(input)
.transform(SwaggerConfig.handlerPackage(basePackage)).or(true);
}
private static Function<Class<?>, Boolean> handlerPackage(final String basePackage) {
return input -> {
for (String strPackage : basePackage.split(",")) {
boolean isMatch = ClassUtils.getPackageName(input).startsWith(strPackage);
if (isMatch) {
return true;
}
}
return false;
};
}
private static Optional<? extends Class<?>> declaringClass(RequestHandler input) {
return Optional.fromNullable(input.declaringClass());
}
swagger註解
swagger通過註解表明該介面會生成文件,包括介面名、請求方法、引數、返回資訊的等等。
- @Api:修飾整個類,描述Controller的作用
- @ApiOperation:描述一個類的一個方法,或者說一個介面
- @ApiParam:單個引數描述
- @ApiModel:用物件來接收引數
- @ApiProperty:用物件接收引數時,描述物件的一個欄位
- @ApiResponse:HTTP響應其中1個描述
- @ApiResponses:HTTP響應整體描述
- @ApiIgnore:使用該註解忽略這個API
- @ApiError :發生錯誤返回的資訊
- @ApiImplicitParam:一個請求引數
- @ApiImplicitParams:多個請求引數
- @Api:修飾整個類,描述Controller的作用
- @Api:用在請求的類上,表示對類的說明
- tags=“說明該類的作用,可以在UI介面上看到的註解”
- value=“該引數沒什麼意義,在UI介面上也看到,所以不需要配置”
- @ApiOperation:用在請求的方法上,說明方法的用途、作用
- value=“說明方法的用途、作用”
- notes=“方法的備註說明”
- @ApiImplicitParams:用在請求的方法上,表示一組引數說明
- @ApiImplicitParam:用在@ApiImplicitParams註解中,指定一個請求引數的各個方面
- name:引數名
- value:引數的漢字說明、解釋
- required:引數是否必須傳
- paramType:引數放在哪個地方
- header --> 請求引數的獲取:
- @RequestHeader· query --> 請求引數的獲取:
- @RequestParam· path(用於restful介面)–> 請求引數的獲取:
- @PathVariable· body(不常用)
- form(不常用)
- dataType:引數型別,預設String,其它值dataType=“Integer”
- defaultValue:引數的預設值
- @ApiResponses:用在請求的方法上,表示一組響應
- @ApiResponse:用在@ApiResponses中,一般用於表達一個錯誤的響應資訊
- code:數字,例如400message:資訊,例如"請求引數沒填好"response:丟擲異常的類
- @ApiModel:用於響應類上,表示一個返回響應資料的資訊
- (這種一般用在post建立的時候,使用@RequestBody這樣的場景,
- 請求引數無法使用@ApiImplicitParam註解進行描述的時候)
- @ApiModelProperty:用在屬性上,描述響應類的屬性