一、Swagger是什么
Swagger是一组开源项目,在ActiveMatrix SOA Suite的一个子项目中开始,期望极大地减少RESTful Web服务开发的时间。其目标是简化API的设计、文档、测试和部署过程。
Swagger通过基于Swagger规范自动生成文档,包括界面测试工具。在设计API的时候,你可以使用Swagger UI来预览你所定义的API,这意味着你的API在实现之前就可以与团队共享和讨论。此外,Swagger还提供了依靠已定义API自动生成客户端代码的强大工具。Swagger使API开发过程更容易,更快捷。
二、Swagger核心概念
1. Swagger UI
Swagger UI提供了一个交互式文档框架,可以让我们非常轻松的展示和测试API。这个文档框架的结构表示了我们的API的资源,操作和参数。 要使用Swagger UI,我们需要使用简单的HTML文件和OpenAPI规范,只需要几个步骤就能展示和交互访问API。
2. Swagger Editer
Swagger Editor是一个在线编辑器,允许您编写和测试Swagger规范。它具有语法高亮,实时解析和文档预览功能。Swagger Editor使我们能够在编写接口规范时实现最佳实践并快速迭代开发。
3. Swagger Codegen
Swagger Codegen可以通过API定义生成API客户端代码,根据您的模板将API定义转换为客户端库文档甚至服务器端的 stubs。Codegen支持超过50多种语言(包括Java,C#,Python,PHP,Ruby等)。
4. Swagger Core
Swagger Core是一个Java和Scala库,可以根据OpenAPI规范生成API文档。Swagger Core还可以将自动生成的文档与JAX-RS,Servlet和Jersey等API进行集成。
三、Swagger使用示例
1. 环境准备
首先,我们需要一个Web容器,例如Tomcat、WebLogic、Jboss等。我以Tomcat为例,以及Maven用于管理依赖。
2. 依赖配置
我们需要导入Swagger的核心包及Swagger UI界面包,下面是Maven配置:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
3. 配置Swagger
Swagger需要一个配置类来提供Swagger UI界面访问路径和Swagger API文档的配置路径。
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
@Bean
public Docket docket() {
return new Docket(DocumentationType.SWAGGER_2)
.pathMapping("/")
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.demo.controller"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Demo API")
.description("Demo REST API")
.version("1.0.0")
.build();
}
}
4. 添加Swagger UI
最后,我们需要把Swagger添加到Web应用程序中。我们可以在应用的Servlet中添加一个Swagger静态资源处理器,它将所有的Swagger UI资源映射到一个URI中。
@Configuration
public class WebMvcConfiguration implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
5. 测试Swagger
启动Tomcat容器,浏览器上输入:http://localhost:8080/swagger-ui.html,你将看到Swagger UI和Demo API的文档,可以在这里尝试调用API接口。
结语
Swagger提供了一种显然,易于使用的方法来开发API文档和测试。借助Swagger,API文档的编写变得更加容易,不再需要使用繁琐而易错的手动编写方法。更重要的是,Swagger秉承着RESTful设计实践,极大的提升了API的可读性、可维护性和可拓展性。