您的位置:

Swagger使用详解

一、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的可读性、可维护性和可拓展性。