`

Swagger规范RESTful AP

阅读更多

      

REST的引入

  随着微服务架构的广泛流行,REST风格受到越来越多的关注。 我们先来看一下REST在WIKI的定义及五大关键点:

  REST在WIKI的定义

  REST stands for Representational State Transfer. It relies on a stateless, client-server, cacheable communications protocol – and in virtually all cases, the HTTP protocol is used

  REST 风格有五大关键点

  资源(Resource)

  资源的表述(Representation)

  状态转移(State Transfer)

  统一接口(Uniform Interface)

  超文本驱动(Hypertext Driven)

  什么是统一接口?

  REST要求, 必须通过统一的接口来对资源执行各种操作。对于每个资源只能执行一组有限的操作 。以HTTP/1.1协议为例,此协议定义了一个操作资源的统一接口,主要包括以下内容:

  **7个HTTP方法:GET/POST/PUT/DELETE/PATCH/HEAD/OPTIONS

  HTTP头信息(HTTP Header可以自定义)

  HTTP响应状态代码(status code可以自定义)

  一套标准的内容协商机制

  一套标准的缓存机制

  一套标准的客户端身份认证机制
<ignore_js_op style="word-wrap: break-word;">

  我们遇到的问题…

  在开发我们的新一代数字化企业云平台的第一个版本时,前端基于reactJS框架,和后端完全解耦,所有的交互都是通过REST Service完成,同时后端各个领域系统间也是通过REST Service来通信。REST本身虽然有统一的规范,然而对于REST API的管理却没有统一规范,再加上前期时间紧迫,没有足够的资源去做详细的文档说明。API定义的沟通就只能依赖UI和后台开发人员的口头沟通。这里面就存在很多 不确定因素 :
<ignore_js_op style="word-wrap: break-word;">

  Swagger的引入

  如何更优雅且全面地描述我们的RESTful API呢?对API文档管理的规范有很多,比如Swagger,I/O docs,blueprint 等。但是Swagger社区活跃,文档更完善,周围相关的配套产品也更丰富,比如Swager UI,Swagger Editor,并且支持直接生成主流语言的调用代码。

  因此,引入Swagger进行Rest API文档管理对项目来说,效率和产出会更高。数字化企业云平台团队经过调研后决定采用Swagger来进行REST API的管理。(注:Microsoft,PayPal等公司也已经引入Swagger 来定义自己的REST API 文档。)

  Swagger已经被捐赠给 Open APIInitiative (OAI),属于OAI的成员之一,我们可以简单看下OAI的定义规范:The goal of the OAIspecification is to define a standard, language-agnostic interface to REST APIswhich allows both humans and computers to discover and understand thecapabilities of the service without access to source code, documentation, orthrough network traffic inspection.

  由此可知, Swagger是为了描述一套标准的而且是和语言无关的REST API的规范。对于外部调用者来说,只需通过Swagger文档即可清楚Server端提供的服务,而不需去阅读源码或接口文档说明。 官网上有关于Swagger的丰富的资源,包括Swagger Editor,Swagger UI,以及Swagger为各种开发语言提供的SDK。这些资源为REST API 的提供者以及调用者提供了极大的便利。

  在确定了引入Swagger后, 如何自动根据代码接口的定义来生成Swagger呢? 在数字化企业云平台项目中同时引入了Swagger-Maven-plugin,通过在已有的API接口中添加少量的annotation, 同时配置Pom.xml文件,即可在Maven compile期间自动生成对应的Swagger文件,这大大减少了我们手工维护Swagger文档的工作量,提高工作效率,同时也避免手工维护引起的失误。以数字化企业云平台中Portal领域中的Action的例子来说,这个接口主要作用是提供”在产品管理过程对各个动作的记录”的服务。

  在每一个接口中添加必要的annotation,并定义可能出现的error code,如下图所示:
<ignore_js_op style="word-wrap: break-word;">

  定义好所有的接口后执行mvn compile,生成对应的Swagger文件,将Swagger文件引入到Swagger UI中即可显示所有的REST API的定义:
<ignore_js_op style="word-wrap: break-word;">

  点击其中的任一API,即可看到API的详细定义,包括request参数,response以及model schema:
<ignore_js_op style="word-wrap: break-word;">

  跨地域沟通(数字化企业云平台开发地点分布在上海,北京,西安三地)是平台开发中面临的重要挑战之一,引入Swagger后可减少交流成本,规范接口定义,减少手工维护文档的工作,大大降低跨地域沟通带来的风险,让各个领域系统更协调高效地合作,也为数字化企业云平台后续的平台扩展做了坚实有力的支持。 
<ignore_js_op style="word-wrap: break-word;">

  在RESTful架构项目中引入Swagger对REST API进行文档管理的优势是显而易见的,数字化企业云平台后续也将基于自动生成的Swagger文件引入API Mock。

分享到:
评论

相关推荐

    Swagger搭建Restful接口.rar

    Swagger是一款强大的工具,专门用于构建、设计和文档化RESTful API。它允许开发者通过注解在代码中描述接口,然后自动生成易于理解的交互式文档,同时提供了接口的实时测试功能。Swagger的核心组件包括Swagger Core...

    springboot +swagger2 restful api

    SpringBoot结合Swagger2创建RESTful API的指南 在现代Web开发中,RESTful API已经成为服务端与客户端交互的标准模式。SpringBoot作为一个轻量级的Java框架,极大地简化了微服务的构建过程。Swagger2则是用于设计、...

    swagger restful demo

    搭建了一个swagger及演示了restful风格的接口使用。直接解压,maven导入到eclipse启动即可,访问地址为http://localhost:8080/swagger/dist/index.html

    Spring Boot中使用Swagger2构建强大的RESTful API文档

    为了解决上面这样的问题,本文将介绍RESTful API的重磅好伙伴Swagger2,它可以轻松的整合到Spring Boot中,并与Spring MVC程序配合组织出强大RESTful API文档。它既可以减少我们创建文档的工作量,同时说明内容又...

    Swagger与Spring结合生成Restful接口文档

    在压缩包中的`apidoc`目录可能包含了自动生成的API文档,这些文档基于Swagger的规范,提供了详细的接口定义,包括模型(Model)、资源(Resource)和操作(Operation)。开发者可以参考这些文档,了解如何使用和测试...

    Spring Boot Swagger2 构建RESTful API

    Swagger2 是一个流行的API开发工具,它允许开发者通过简洁的注解来文档化RESTful API,提供了一种友好的图形界面,使得用户可以轻松地进行API测试和交互。RESTful是一种软件架构风格,用于构建可伸缩的网络应用程序...

    swagger-ui-master.zip_Swagger favicon.ico_restful_restful api_sw

    Swagger是Swagger UI的核心组件,它遵循OpenAPI规范,这个规范是一种标准,用于描述RESTful API的接口,包括端点、参数、响应等。 "favicon.ico"是网站的图标,通常显示在浏览器的地址栏或标签页上,为Swagger UI...

    swagger整合SpringMvc生成Restful api

    swagger提供的接口文档相比传统的文档方式更加直观也更加高效,但是在网上找了很多关于Swagger与SpringMvc整合的资料,发现都比较繁琐,不是很满意,于是有了这篇博客,希望对大家有所帮助。教程:...

    Spring Boot中使用Swagger2构建RESTful APIs

    Swagger是一个广泛使用的工具,能够自动生成RESTful API的在线文档,并且提供API的功能测试...了解和掌握这些知识点,可以帮助开发者更高效地开发、测试和维护RESTful API,同时使得API文档的管理更加规范化和自动化。

    PyPI 官网下载 | flask-restful-swagger-3-0.2.0.tar.gz

    Flask-Restful-Swagger-3是这两个工具的整合,它将Flask-Restful的API定义和Swagger的文档化能力结合在一起,允许开发者在编写API的同时,自动生成符合OpenAPI规范的文档。版本3.0.2.0代表了该库的最新稳定版,可能...

    swagger的压缩包,下载到本地解压后即可使用Swagger 是一个用于生成、描述和调用 RESTful 接口的 Web 服务

    Swagger 是一个用于生成、描述和调用 RESTful 接口的 Web 服务。通俗的来讲,Swagger 就是将项目中所有(想要暴露的)接口展现在页面上,并且可以进行接口调用和测试的服务。swagger可以将项目中所有的接口展现在...

    Spring Boot 中使用 Swagger2 构建 RESTful APIs

    Spring Boot 中使用 Swagger2 构建 RESTful APIs Swagger 是一系列 RESTful API 的工具,通过 Swagger 可以获得项目的交互式文档,客户端 SDK 的自动生成等功能。Swagger 的目标是为 REST APIs 定义一个标准的、与...

    SpringBoot整合整合Swagger 界面查看Restful API1

    `Docket`的构造函数接受`DocumentationType.SWAGGER_2`参数,表明我们正在使用Swagger 2规范。我们还指定了API的元数据,如`apiInfo()`方法中定义的,包括标题、描述、联系人信息和版本号。 `createRestApi`方法中...

    swagger2:Swagger RESTful API 文档

    Swagger2 - Swagger RESTful API 文档 版本 0.21 描述 这个模块是实验性的! 任何变化都可能发生! 是一个用于生成、解析和转换 API 文档的模块。 它支持读取 JSON 符号中的 swagger 规范,如果安装了 ,它还可以...

    csl-swagger-api:使用 Swagger 规范的 RESTful API 表示

    `csl-swagger-api`项目则是基于Swagger规范实现的一个工具,用于创建、测试和验证RESTful API。在这个项目中,我们将探讨Swagger的核心概念、其在JavaScript中的应用以及如何利用它来提高API开发的效率和质量。 ...

    使用swagger2生成RESTful风格的接口文档.zip

    RESTful风格的API设计规范已经成为现代Web服务的标准。Swagger2是一个强大的工具,用于生成、文档化和测试RESTful API。它使得开发者能够以结构化的方式描述API,方便其他人理解和使用。本教程将介绍如何在...

    swagger-core,用于生成swagger api规范的示例和服务器集成,该规范允许轻松访问restapi.zip

    Swagger Core 是一个强大的开源项目,专门用于生成符合 Swagger API 规范的代码和服务器集成。Swagger 是一种流行的 RESTful API 描述语言,它允许开发者通过 YAML 或 JSON 文件清晰地定义 API 的接口,包括资源、...

    swagger整合Spring Boot生成Restful接口文档

    而Swagger是目前最流行的接口文档解决方案,本文主要通过代码实战的方式讲解Spring Boot 和Swagger集成生成Restful接口文档。教程参见 http://blog.csdn.net/zjx2016/article/details/74407832

    swagger-ui restful接口实现

    资源包含两个文件,一个是swagger相关jar包,一个是swagger项目demo. 可以查看博客:https://blog.csdn.net/qq_25814003/article/details/81710222

    java springboot+swagger+mysql 框架案例,数据库mysql 5.7

    Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来...

Global site tag (gtag.js) - Google Analytics