Swagger是一個規範和完整的框架,用於生成、描述、調用和可視化 RESTful 風格的 Web 服務。整體目標是使客戶端和文件系統做爲服務器以一樣的速度來更新。文件的方法,參數和模型緊密集成到服務器端的代碼,容許API來始終保持同步。
Swagger可以實現接口API和文檔保持一致性。html
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<swagger.version>2.2.2</swagger.version>
</properties>
<dependencies>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency>
</dependencies>複製代碼
/**
* Swagger配置
* @author 陳梓平
* @date 2017/10/24.
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket demoApi(){
return new Docket(DocumentationType.SWAGGER_2)
.groupName("demo")//組名
.genericModelSubstitutes(DeferredResult.class)//通用的模板替代
.useDefaultResponseMessages(false)//是否使用默認響應信息
.forCodeGeneration(true)//通用編碼
.pathMapping("/")// base,最終調用接口後會和paths拼接在一塊兒
.select()
.paths(or(regex("/api/.*")))//過濾的接口
.build()
.apiInfo(apiInfo());
}
@Bean
public Docket createRestApi() {
Predicate<RequestHandler> predicate = new Predicate<RequestHandler>() {
@Override
public boolean apply(RequestHandler requestHandler) {
Class<?> declaringClass = requestHandler.getClass();
if (declaringClass == BasicErrorController.class)// 排除
return false;
if(declaringClass.isAnnotationPresent(RestController.class)) // 被註解的類
return true;
if(declaringClass.isAssignableFrom(ResponseBody.class)) // 被註解的方法
return true;
return false;
}
};
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.useDefaultResponseMessages(false)
.select()
.apis(predicate)
.build();
}
private ApiInfo apiInfo() {
Contact contact = new Contact();
contact.setName("陳梓平");
contact.setUrl("http://blog.csdn.net/dushiwodecuo");
contact.setEmail("catalpaflat@outlook.com");
return new ApiInfoBuilder()
.title("Electronic Health Record(EHR) Platform API")//大標題
.description("EHR Platform's REST API, all the applications could access the Object model data via JSON.")//詳細描述
.version("1.0")//版本
.termsOfServiceUrl("NO terms of service")
.contact("陳梓平")//做者
.license("The Apache License, Version 2.0")
.licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
.build();
}
}複製代碼