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();
}
}复制代码