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。 |
相关推荐
linux基础进阶笔记,配套视频:https://www.bilibili.com/list/474327672?sid=4493093&spm_id_from=333.999.0.0&desc=1
IMG20241115211541.jpg
GEE训练教程——Landsat5、8和Sentinel-2、DEM和各2哦想指数下载
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
基于springboot家政预约平台源码数据库文档.zip
Ucharts添加stack和折线图line的混合图
基于springboot员工在线餐饮管理系统源码数据库文档.zip
新能源汽车进出口数据 1、时间跨度:2018-2020年 2、指标说明:包含如下指标的进出口数据:混合动力客车(10座及以上)、纯电动客车(10座及以上)、非插电式混合动力乘用车、插电式混合动力乘用车、纯电动乘用车 二、新能源汽车进出口月销售数据(分地区、分类型、分 级别) 1、数据来源:见资料内说明 2、时间跨度:2014年1月-2021年5月 4、指标说明: 包含如下指标 2015年1月-2021年5月新能源乘用车终端月度销量(分类型)部分内容如下: 新能源乘用车(单月值、累计值 )、插电式混合动力 月度销量合计(狭义乘用车轿车、SUV、MPV、交叉型乘用车); 月度销量同比增速(狭义乘用车轿车、SUV、MPV、交叉型乘用车); 累计销量合计(狭义乘用车轿车、SUV、IPV、交叉型乘用车); 累计销量同比增速(狭义乘用车轿车、SUV、MPV、交叉型乘用车); 累计结构变化(狭义乘用车轿车、SUV、IPV、交叉型乘用车); 2015年1月-2021年5月新能源乘用车终端月度销量(分地区)内容如下: 更多见资源内
中心主题-241121215200.pdf
内容概要:本文档提供了多个蓝奏云下载链接及其对应解压密码,帮助用户快速获取所需文件。 适合人群:需要从蓝奏云下载文件的互联网用户。 使用场景及目标:方便地记录并分享蓝奏云上文件的下载地址和密码,提高下载效率。 阅读建议:直接查看并使用提供的链接和密码即可。若遇到失效情况,请尝试联系上传者确认更新后的链接。
基于Java web 实现的仓库管理系统源码,适用于初学者了解Java web的开发过程以及仓库管理系统的实现。
资源名称:Python-文件重命名-自定义添加文字-重命名 类型:windows—exe可执行工具 环境:Windows10或以上系统 功能: 1、点击按钮 "源原文"【浏览】表示:选择重命名的文件夹 2、点击按钮 "保存文件夹"【浏览】表示:保存的路径(为了方便可选择保存在 源文件中 ) 3、功能①:在【头部】添加自定义文字 4、功能②:在【尾部】添加自定义文字 5、功能③:输入源字符 ;输入替换字符 可以将源文件中的字符替换自定义的 6、功能④:自动加上编号_1 _2 _3 优点: 1、非常快的速度! 2、已打包—双击即用!无需安装! 3、自带GUI界面方便使用!
JDK8安装包
配合作者 一同使用 作者地址没有次下载路径 https://blog.csdn.net/weixin_52372189/article/details/127471149?fromshare=blogdetail&sharetype=blogdetail&sharerId=127471149&sharerefer=PC&sharesource=weixin_45375332&sharefrom=from_link
GEE训练教程
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
基于springboot交通感知与车路协同系统源码数据库文档.zip
基于springboot+vue 雅妮电影票购买系统源码数据库文档.zip
为了更好地理解 HTML5 的拖放功能,我们设计了一个简单有趣的示例:将水果从水果区拖放到购物笼中,实时更新数量和价格,并在所有水果被成功放置后,播放音效并显示提示。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。