`

Swagger简介

 
阅读更多
前言

Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。本文简单介绍了在项目中集成swagger的方法和一些常见问题。如果想深入分析项目源码,了解更多内容,见参考资料。

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 让部署管理和使用功能强大的API从未如此简单。

一、使用介绍

什么是 Swagger?

Swagger™的目标是为REST APIs 定义一个标准的,与语言无关的接口,使人和计算机在看不到源码或者看不到文档或者不能通过网络流量检测的情况下能发现和理解各种服务的功能。当服务通过Swagger定义,消费者就能与远程的服务互动通过少量的实现逻辑。类似于低级编程接口,Swagger去掉了调用服务时的很多猜测。
浏览 Swagger-Spec 去了解更多关于Swagger 项目的信息,包括附加的支持其他语言的库。

如何集成Swagger-springmvc到我们的项目中?

依赖:
Maven
<dependency>
<groupId>com.mangofactory</groupId>
<artifactId>swagger-springmvc</artifactId>
<version>0.9.4</version>
</dependency>


Gradle
repositories {
jcenter()
}

compile "com.mangofactory:swagger-springmvc:0.9.4"


使用:
要最快捷地启动swagger-springmvc项目并且使用默认设置,推荐的方式是使用SwaggerSpringMvc插件

Spring Java Configuration
@Configuration
@EnableWebMvc
@EnableSwagger
@ComponentScan("com.myapp.packages")
public class WebAppConfig {
 ...
}


Spring xml Configuration
<mvc:annotation-driven/> <!-- Required so swagger-springmvc can access spring's RequestMappingHandlerMapping  -->
<bean class="com.mangofactory.swagger.configuration.SpringSwaggerConfig" />


SwaggerSpringMvcPlugin XML Configuration
为了使用这个插件,你需要创造一个spring java配置类。使用spring的 @Configuration ,这个配置类必须被定义到你的xml上下文
<!-- Required so swagger-springmvc can access spring's RequestMappingHandlerMapping  -->
<mvc:annotation-driven/>


<bean class="com.yourapp.configuration.MySwaggerConfig"/>
@Configuration
@EnableSwagger //Loads the spring beans required by the framework
public class MySwaggerConfig {

private SpringSwaggerConfig springSwaggerConfig;

/**
* Required to autowire SpringSwaggerConfig
*/
@Autowired
public void setSpringSwaggerConfig(SpringSwaggerConfig springSwaggerConfig) {
  this.springSwaggerConfig = springSwaggerConfig;
}

/**
* Every SwaggerSpringMvcPlugin bean is picked up by the swagger-mvc framework - allowing for multiple
* swagger groups i.e. same code base multiple swagger resource listings.
 */
@Bean
public SwaggerSpringMvcPlugin customImplementation(){
  return new SwaggerSpringMvcPlugin(this.springSwaggerConfig)
          .includePatterns(".*pet.*");
}

}


SwaggerSpringMvcPlugin Spring Java Configuration
使用@EnableSwagger注解
自动注入SpringSwaggerConfig
定义一个或多个SwaggerSpringMvcPlugin实例,通过springs @Bean注解

@Configuration
@EnableWebMvc
@EnableSwagger
@ComponentScan("com.myapp.controllers")
public class CustomJavaPluginConfig {

private SpringSwaggerConfig springSwaggerConfig;

@Autowired
public void setSpringSwaggerConfig(SpringSwaggerConfig springSwaggerConfig) {
  this.springSwaggerConfig = springSwaggerConfig;
}

@Bean //Don't forget the @Bean annotation
public SwaggerSpringMvcPlugin customImplementation(){
  return new SwaggerSpringMvcPlugin(this.springSwaggerConfig)
        .apiInfo(apiInfo())
        .includePatterns(".*pet.*");
}

private ApiInfo apiInfo() {
  ApiInfo apiInfo = new ApiInfo(
          "My Apps API Title",
          "My Apps API Description",
          "My Apps API terms of service",
          "My Apps API Contact Email",
          "My Apps API Licence Type",
          "My Apps API License URL"
    );
  return apiInfo;
}
}


二、碰到的问题
关于@API注解
在Swagger Annotation中:
API表示一个开放的API,可以通过description简要描述该API的功能。
在一个@API下,可有多个@ApiOperation,表示针对该API的CRUD操作。在ApiOperation Annotation中可以通过value,notes描述该操作的作用,response描述正常情况下该请求的返回对象类型。
在一个ApiOperation下,可以通过ApiResponses描述该API操作可能出现的异常情况。
ApiParam用于描述该API操作接受的参数类型
再接着,为项目的Model对象添加Swagger Annotation,这样Swagger Scanner可以获取更多关于Model对象的信息。
@ApiModel(value = "A SayingRepresentation is a representation of greeting")
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public class SayingRepresentation {
private long id;
@ApiModelProperty(value = "greeting content", required = true)
private String content;

public SayingRepresentation(long id, String content) {
    this.id = id;
    this.content = content;
}

public long getId() {
    return id;
}

public String getContent() {
    return content;
}


通过上面的步骤,项目已经具备了提供Swagger格式的API信息的能力,接下来,我们把这些信息和Swagger UI集成,以非常美观,实用的方式把这些API信息展示出来。

和Swagger UI的集成
首先,从github(https://github.com/wordnik/swagger-ui)上下载Swagger-UI, 把该项目dist目录下的内容拷贝到项目的resources的目录assets下。


然后,修改index.html, 把Swagger UI对象中的URL替换为自己的API路径。

 window.swaggerUi = new SwaggerUi({
  url: "/api/api-docs",
  dom_id: "swagger-ui-container",


参考:http://blog.csdn.net/wangnan9279/article/details/44541665
分享到:
评论

相关推荐

    Swagger 自定义UI界面.doc

    一、 Swagger 简介 Swagger 是一个基于 OpenAPI 规范的 API 文档生成工具,能够自动生成 RESTful API 的文档,帮助开发者快速了解 API 的使用方法和参数信息。Swagger 提供了多种语言的支持,包括 Java、Python、...

    Swagger API接口创建

    #### Swagger简介 Swagger的目标是为RESTful API定义一个标准且与语言无关的接口。通过这个接口,客户端和文件系统可以与服务器端保持同步更新的速度。Swagger将API的方法、参数和模型紧密集成到服务器端的代码中,...

    Swagger(狂神说Java)(教学视频+源代码)

    二、Swagger简介 三、SpringBoot集成Swagger 3.1.新建一个SpringBoot的web项目 3.2.导入相关依赖 3.3编写一个Hello工程 3.4 配置Swagger==&gt;Config 3.5.测试运行,访问`http://localhost:8080/swagger-ui.html` 四、...

    jmeter接口自动化测试插件swagger转jmeter脚本.zip

    二、Swagger简介与应用 Swagger是一款强大的API设计和文档工具,通过规范化的JSON格式定义API接口,可以自动生成易于理解和使用的API文档。Swagger还支持代码生成和测试,便于开发者快速构建和验证API服务。Swagger...

    Laravel开发-laravel-swagger-api

    **Swagger简介** Swagger是一种用于描述RESTful API的规范,其核心是OpenAPI规范(OAS),它允许开发者用YAML或JSON格式来定义API接口,包括接口的URL、方法、参数、响应等信息。Swagger UI则是一个交互式的Web界面...

    swagger小白学习总结

    一、Swagger 简介 Swagger 是一个基于 OpenAPI 规范的 API 框架,用于生成 API 文档和在线测试 API。Swagger 支持多种语言,包括 Java、PHP 等。Swagger 的官网是 https://swagger.io/。 二、Swagger 的优势 ...

    Spring Boot集成 Swagger2 展现在线接口文档

    1. Swagger 简介 Swagger 是一个开源的 API 文档工具,能够生成在线接口文档,帮助开发人员和调用接口的人员更好地理解和使用 API。Swagger 官方对其定义为:“最好的 API 是使用 Swagger 工具构建的”。Swagger ...

    swagger使用文档

    #### 一、Swagger简介与原理 Swagger 是一款强大的工具,它能够帮助开发者们生成、描述、调用以及可视化 RESTful 风格的 Web 服务。其核心价值在于使得客户端和服务器端能以相同的速度进行更新,从而确保 API 接口...

    【ASP.NET编程知识】.Net Core2.1 WebAPI新增Swagger插件详解.docx

    一、Swagger 简介 Swagger 是一个基于 OpenAPI 规范的 API 文档生成工具,能够自动生成 API 的文档,减少手动编写文档的麻烦。Swagger 的出现解放了接口文档撰写的麻烦,也提高了前后端开发者的工作效率。 二、...

    swagger自学文档

    #### 一、Swagger简介与核心价值 Swagger是一个全面且标准化的框架,主要用于构建、描述、调用以及展示基于RESTful风格的Web服务。它旨在实现客户端和服务端同步更新的目标,通过将API的方法、参数以及模型紧密地与...

    接口可视化swagger实现.rar

    1. **Swagger 简介**: Swagger 是 OpenAPI 规范的一个实现,它使用 YAML 或 JSON 来定义 API 的结构,包括端点、请求方法、参数、响应等。这样,开发者可以生成易于理解的文档,并且能够进行交互式的 API 测试。 ...

    spring-boot-starter-swagger-master

    一、Swagger简介 Swagger 是一种规范和完整的框架,用于设计、构建、文档化和使用RESTful Web服务。它提供了一种标准的方式来定义和实现RESTful API,通过JSON格式的OpenAPI规范来描述API。Swagger UI是一个Web界面...

    swagger.docx

    #### 一、Swagger简介 Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。它旨在为API提供全面的描述信息,并且能够自动地为这些API生成文档。在Java领域,Swagger通常与Spring ...

    spring boot-2.1.16整合swagger-2.9.2 含yml配置文件的代码详解

    Swagger 简介 Swagger 是一个开源的 API 文档生成工具,可以根据 API 的注解生成文档。Swagger 由三个主要组件组成:Swagger Editor、Swagger UI 和 Swagger Codegen。Swagger Editor 是一个在线编辑器,用于编写 ...

    springboot swagger2 demo

    1. **Swagger2简介** Swagger2是一款优秀的API文档生成工具,遵循OpenAPI规范(之前称为Swagger specification),能够自动生成、验证和文档化RESTful API。它提供了一种标准的方式来描述RESTful API,使得开发者...

    swagger-example:OpenAPI规范和Swagger开源工具的介绍和示例,包括swagger-editor,swagger-codegen和swagger-ui。 客户端SDK,服务器代码,asciidoctor和html文档的自动生成示例-Source code editor

    Swagger简介和示例 快速开始 安装:git clone之后,在根目录下执行以下命令: swagger-server/bin/install.sh 这样做将产生一些客户端SDK,服务器代码,asciidoc和html文档,如下所示: +---asciidoc //asciidoc ...

    springboot中swagger快速启动流程

    一、Swagger 简介 Swagger 是一种基于 OpenAPI 规范的 API 文档生成工具,能够自动生成 API 文档,并提供在线测试接口的功能。Swagger 广泛应用于微服务架构、RESTful APIs 等领域,帮助开发者快速构建和测试 APIs...

    swaggerui.zip

    Swagger 2简介** Swagger 2是Swagger的升级版,提供了一套完整的工具集,用于设计、构建、记录和使用RESTful Web服务。Swagger的核心是OpenAPI规范,它定义了一个标准的、语言无关的方式来描述API,使得机器和人类...

Global site tag (gtag.js) - Google Analytics