1. 程式人生 > >使用Swagger自動生成文件

使用Swagger自動生成文件

Swagger 是什麼?

Swagger 是一個規範和完整的框架,用於生成、描述、呼叫和視覺化 RESTful 風格的 Web 服務。

Springfox 的前身是 swagger-springmvc,是一個開源的 API doc 框架,可以將我們的 Controller 的方法以文件的形式展現,基於 Swagger。


官網:http://swagger.io/

開源地址:http://springfox.github.io/springfox/

Swagger使用

第一步: 匯入依賴
<!-- 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>
第二步: 開啟@EnableSwagger2註解
@SpringBootApplication
@RestController
@EnableSwagger2
public class DemoApplication {



如上攔截了所有controller的API, 如何攔截固定的package,url 的API 第四步:定製url的API 可以一次性攔截所有的介面,也可以分組攔截
@Configuration
public class Swagger2Configuration {
    /*@Bean
	public Docket accessToken() {
		return new Docket(DocumentationType.SWAGGER_2).groupName("訂單")// 定義組
				.select() // 選擇那些路徑和 api 會生成 document
				.apis(RequestHandlerSelectors.basePackage("com.zto.springboot.controller")) // 攔截的包路徑
				.paths(PathSelectors.regex("/web/.*"))// 攔截的介面路徑
				.build() // 建立
				.apiInfo(apiInfo()); // 配置說明
	}*/
	
	@Bean
	public Docket accessToken2() {
		return new Docket(DocumentationType.SWAGGER_2).groupName("所有介面")// 定義組
				.select() // 選擇那些路徑和 api 會生成 document
				.apis(RequestHandlerSelectors.basePackage("com.zto.security.web.controller")) // 攔截的包路徑
				//.paths(PathSelectors.regex("/user/.*"))// 攔截的介面路徑
				.paths(PathSelectors.any())  //攔截所有介面
				.build() // 建立
				.apiInfo(apiInfo()); // 配置說明
	}

	private ApiInfo apiInfo() {
		return new ApiInfoBuilder()
				.title("xxx專案介面文件")// 標題
				.description("xxx專案描述xxx專案描述xxx專案描述xxx專案描述")// 描述
				.contact(new Contact("xxx", "http://www.baidu.com","
[email protected]
"))// 聯絡 //.termsOfServiceUrl("http://www.roncoo.com") //服務條款的URL // .license("Apache License Version 2.0")// 開源協議 // .licenseUrl("https://github.com/springfox/springfox/blob/master/LICENSE")//地址 .version("1.0")// 版本 .build(); } }


第五步:控制層註解使用說明
@Api:修飾整個類,描述Controller的作用
@ApiOperation:描述一個類的一個方法,或者說一個介面
@ApiParam:單個引數描述
@ApiModel:用物件來接收引數
@ApiProperty:用物件接收引數時,描述物件的一個欄位
@ApiResponse:HTTP響應其中1個描述
@ApiResponses:HTTP響應整體描述
@ApiIgnore:使用該註解忽略這個API
@ApiError :發生錯誤返回的資訊
@ApiParamImplicitL:一個請求引數
@ApiParamsImplicit 多個請求引數


@ApiOperation  
@ApiOperation(value = "新增使用者服務", notes = "新增使用者")
@PostMapping
public User create(@Valid @RequestBody User user, BindingResult errors) {
    return user;
}
@ApiModelProperty
public class UserQueryCondition {
	
	private String username;

	@ApiModelProperty(value = "使用者年齡起始值")
	private int age;

	@ApiModelProperty(value = "使用者年齡終止值")
	private int ageTo;
	
	private String xxx;
}


@ApiParam
@ApiOperation(value = "使用者刪除服務", notes = "刪除使用者")
@DeleteMapping("/{id:\\d+}")
public void delete(@ApiParam("使用者id") @PathVariable String id) {
   System.out.println(id);
}


最終效果