rest开发_REST 101开发人员专用

rest开发

本地代码执行

诸如C之类的高级语言中的函数将被汇编为Assembly中的过程 。 它们增加了一个间接级别,使我们不必考虑内存地址。 高枕无忧

诸如Java之类的面向对象语言中的方法和多态性增加了另一种间接性 ,使我们不必考虑一组相似功能的特定变体。

尽管有这些间接性,方法基本上仍然是过程调用,告诉计算机将执行流从一个内存位置切换到另一个内存位置。 所有这些都是在同一台计算机上运行的同一进程中发生的。

远程执行代码

这与将执行切换到另一个进程或另一台计算机根本不同。 特别是后者非常不同,因为另一台计算机甚至可能没有相同的操作系统,程序可以通过该操作系统访问内存。

因此,尝试尽可能隐藏这种差异的远程代码执行机制(例如RMI或SOAP )在很大程度上失败并不奇怪。 这种技术采用了所谓的远程过程调用 (RPC)。

我们必须区分本地过程调用和远程过程调用的原因之一是RPC的速度慢得多。 rpc

对于大多数实际应用程序,这将改变您进行的调用的性质:您将希望进行较少的远程调用,而这些调用的粒度更粗。

另一个原因是本质上组织性比技术性强。

当您调用的代码位于另一台计算机上的另一个进程中时,该另一个进程很可能是由其他人编写和部署的。 为了使这两段代码很好地协作,需要某种形式的协调。 这就是我们为耦合付出的代价。

通过接口协调变更

我们还可以在单​​个过程中看到此问题,例如,当代码部署在不同的jar文件中时。 如果升级代码所依赖的第三方jar文件,则可能需要更改代码以使一切正常运行。

这种协调令人讨厌。 如果我们只需部署该jar的最新安全补丁程序而不必担心破坏我们的代码,那就更好了。 幸运的是,如果我们谨慎的话,我们可以。

Java之类的语言接口将代码的公共部分和私有部分分开。 接口

客户所依赖的是公共部分,因此您必须以谨慎的方式开发接口,以避免破坏客户。

相反,私有部分可以随意更改。

从界面到服务

在OSGi中 ,接口是所谓的微服务的基础 。 通过在注册表中发布服务,我们可以使客户端无需知道哪个对象实现了给定的接口。 换句话说,客户端可以发现提供服务的对象的身份。 服务注册表成为我们访问功能的入口。

这些接口被称为微服务是有原因的:它们是构成面向服务的体系结构 (SOA)的服务的微型版本。

将微服务直接扩展到“ SOA服务”会导致RPC样式的实现,例如使用SOAP。 但是,我们早先已经确定RPC不是调用远程代码的最佳方法。

输入REST。

RESTful服务

高枕无忧 代表性状态转移 (REST)是一种体系结构样式,将Web的优点带入了程序世界。

不能否认Web的可伸缩性,因此这是一个有趣的角度。

与其解释REST通常通过探索其体系结构约束来完成,不如将其与微服务进行比较。

设计良好的RESTful服务具有单个入口点,例如微服务注册表。 该入口点可以采用家庭资源的形式。

我们像访问任何其他资源一样访问主页资源:通过表示。 表示形式是我们需要解释的一系列字节。 这种解释的规则由媒体类型给出。

如今,大多数RESTful服务都基于JSON或XML表示。 资源的媒体类型与对象的接口进行比较。

一些接口包含使我们能够访问其他接口的方法。 同样,资源的表示形式可能包含指向其他资源的超链接 。

基于代码的服务与基于数据的服务

REST和SOAP之间的区别现在变得显而易见。

在SOAP中,就像在微服务中一样,该接口由方法组成。 换句话说,它是基于代码的。 肥皂

另一方面,在REST中,接口由代码和数据组成。 我们已经看过数据:媒体类型描述的表示形式。 该代码是统一接口 ,这意味着所有资源都相同(统一)。

实际上,统一接口由HTTP方法 GET,POST,PUT和DELETE组成。

由于统一接口对于所有资源都是固定的, 因此任何RESTful服务中的真正汁液都不在代码中,而在数据中:媒体类型 。

正如有发展Java接口的规则一样,也有发展媒体类型的规则,例如, 基于XML的媒体类型 。 (由此得出的结论是, 您不能对基于XML的媒体类型使用XML模式验证 。)

统一资源标识符

到目前为止,我还没有提到统一资源标识符 (URI)。 许多所谓的RESTful服务的文档可能会让您觉得它们很重要。

身份 但是,由于URI标识资源,因此它们在微服务中的等效项是实现接口的对象的标识。

希望这表明客户端不必关心URI。 仅本地资源的URI很重要。

家庭资源的表示形式包含指向其他资源的链接。 这些链接的含义由链接关系指示。

通过了解链接关系,客户端可以决定要遵循的链接,并从表示形式中发现其URI。

服务版本

演化 我们应尽可能遵循不断发展的媒体类型的规则,而不引入任何重大变化。

但是,有时这是不可避免的。 然后,我们应该创建该服务的新版本。

由于URI不是RESTful API的公共接口的一部分,因此它们不是中继版本信息的正确工具。 可以通过与微服务进行比较来得出指示API主要(即不兼容)版本的正确方法。

每当服务引入重大更改时,都应更改其接口。 在RESTful API中,这意味着更改媒体类型。 然后,客户端可以使用内容协商来请求其理解的媒体类型。

你怎么看?

你怎么看 可以找到有关如何设计和记录基于代码的接口的文献。

对于基于数据的接口(如媒体类型),情况并非如此。

随着RESTful服务变得越来越流行,这是需要填补的空白。 以后我会回到这个话题。

您如何设计服务? 您如何记录它们?

参考: REST 101对于开发人员,来自我们的JCG合作伙伴 Remon Sinnema,位于安全软件开发博客上。

翻译自: https://www.javacodegeeks.com/2013/09/rest-101-for-developers.html

rest开发

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346604.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言 交互式电子白板案例,交互式电子白板教学案例

交互式电子白板教学案例交互式电子白板教学案例——电子白板让修改习作不再难钢城一小 熊莉红前言——转眼间,一年的时间稍瞬即逝。2012年的暑假,我们学校在每一个班级都安装了交互式电子白板,面对着这一新兴的产物,老师们跃跃欲试…

matlabrvctools主要功能及实际应用_【从业必备 | 收藏】ISO26262功能安全标准白皮书:关键组成、软硬件认证、测试过程、合规认证工具...

ISO26262功能安全标准白皮书:关键组成、软硬件认证、测试过程,合规的认证工具目 录背景ISO 26262的关键部分硬件组件认证软件组件认证“在实践中证明”的证据应用于现有流程测试工具认证下一步1. 背景随着各行业引进一系列产品设计和测试的标准化流…

JVM体系结构:JVM中的执行引擎

各位读者好! 在JVM系列的上一篇文章中,开发人员了解了虚拟机的ClassLoader和Runtime Data Areas组件。 本教程将帮助开发人员正确理解JVM中的执行引擎 。 1.简介 在继续之前,让我们看一下Java虚拟机及其基本特征。 1.1什么是Java虚拟机&…

python编程语言优缺点_原创001 第一次接触这个神奇而又无所不能的编程语言:Python...

***********************人生苦短,我用Python,不定期更新博客,小伙伴们记得关注******************** OK,说到Python这个语言,相信大家。对它还是有一点小陌生,对于编程语言来说,我们大家耳熟能…

ese如何实现支付 nfc_海运费如何实现快捷支付?答案有了

快捷支付时代,海运费支付能否更简单?“航运在线通”给出了答案。1月9日,中国银行天津市分行举行了“航运在线通”产品发布会。天津市商务局、天津市金融局、天津市税务局、中国人民银行、国家外汇管理局天津市分局、中国银行总分行相关领导及…

smtplib 抄送邮件_用Python收发电子邮件

电子邮件是最古老的互联网服务之一,发明于1969年,它已经50岁了!它并不要求收信人发信人同时连接网络,邮件存放于服务器,所以至今在企业内部还在大量使用。而且它是开放协议,没有被某大公司垄断。我们完全可…

console.log()不显示结果_RNA结合蛋白与RNA的缠绵故事,教你不做实验发文章

解螺旋公众号陪伴你科研的第1869天继续学习如何不做实验发文章RNA结合蛋白是(RNA binding protein,RBP)细胞中一类可以识别特殊的RNA结合域与RNA互作,并参与RNA剪切、转运、序列编辑、胞内定位及翻译控制等多种转录后的调控过程中。既然RBP功能这么重要&…

watch gt 鸿蒙,鸿蒙登陆第三站:第一枚Harmony手表亮相?华为Watch GT 2e首发

作者|蒋杰升简称|单蒋让你们荡起昨天(3月19日)中午,华为官方放出两款华为WatchGT 2全新配色:玫瑰金、冰雪白。而前一天则是被猜测新增石墨黑、火山红、薄荷绿三种配色。至此,华为WatchGT 2改款Watch GT 2e,定于3月26日发布已无悬念…

python设计模式有哪些_设计模式教程

设计模式是软件设计中常见问题的典型解决方案。它们就像能根据需求进行调整的预制蓝图,可用于解决代码中反复出现的设计问题。 设计模式与方法或库的使用方式不同,你很难直接在自己的程序中套用某个设计模式。模式并不是一段特定的代码,而是解…

一建机电实务教材电子版_必背!一建《机电实务》高频考点,每日一背

本文部分来自学霸笔记,点击链接关注公众号下载【工业管道的施工程序】1.管道施工前应具备的开工条件:1.工程设计图纸及其他技术文件完整齐全,已按程序进行了工程交底和图纸会审。2.施工组织设计和施工方案已批准,并已进行了技术和…

python 数据去重_科学网—python学习——根据条件提取数据,并去重 - 李立的博文...

[Python字符串提取] 摘要:根据要求进行字符串的提取,并去重 导入分析所需的库import pandas as pd 构造数据集 as1 pd.DataFrame({a:[1,2,3,4], b:[adwdea,asdw;swa,des,swa,dwad;asdw;swa,se;dw,asd;erf,de,de]})编写分析函数 def trans(b): as1[c] b…

assertionerror python_Python成为专业人士笔记–内置模块Modules和函数Functions

“专业人士笔记”系列目录:创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!​zhuanlan.zhihu.com模块是一个包含Python定义和语句的文件,而函数是执行逻辑的一段代码 。要检查python中内置的函数&#xff…

【Filament】纹理贴图

1 前言 本文主要介绍使用 Filament 实现纹理贴图,读者如果对 Filament 不太熟悉,请回顾以下内容。 Filament环境搭建绘制三角形绘制矩形绘制圆形绘制立方体 Filament 纹理坐标的 x、y 轴正方向分别朝右和朝上,其 y 轴正方向朝向与 OpenGL ES…

c++可视化界面_新基建的福音:智慧楼宇可视化监控系统引领智能化新时代

前言智慧楼宇和人们的生活息息相关,楼宇智能化程度的提高,会极大程度的改善人们的生活品质,在当前 工业互联网 大背景下受到很大关注。目前 智慧楼宇可视化监控 的主要优点包括:智慧化 -- 智慧楼宇是一个生态系统,像人一样拥有感知…

table 多行 宽度不一致_“table”除了桌子,你还知道一些别的意思吗?

就比如"nine-nine table"这可是小学一年级必须要掌握的知识实际上,nine-nine table是九九乘法表,乘法表可以用times table表示,书面用语是multiplication table。table除了桌子的意思外,还有一些别的意思和表达&#xf…

ddos攻击工具_简单有效的ddos攻击防御方法

做过网站的站长大多有被ddos攻击的经历,不少人面对竞争对手的网站就是直接雇人ddos攻击网站,导致对方网站长期打不开,最后无奈关闭网站,初尧今天就告诉大家一个最简单也是最有效的防御方法。高防服务器/高防IP对于游戏&#xff0c…

回调函数中有回调函数吗_嗨,那里有回调!

回调函数中有回调函数吗因为是我的书包,所以我喜欢JavaScript 。 实际上,我已经开始喜欢JavaScritp的面向异步回调的编程风格 。 因此,当我发现自己处于非JavaScript环境中时(例如Java) ,我往往会错过使用回…

python的django_django能用来做什么

Django是什么 Django是一个开放源代码的Web应用框架,由Python写成。采用了MT‘V的框架模式,即模型M,模板T和视图V。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统&am…

datatable如何生成级联数据_如何把Excel表数据批量生成条形码

条形码属于一维条码,是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符,条形码的种类比较多,比如常用的Code128码,Code39码,Code93码,EAN-13码&am…

android数字累加,Android自己设置View之数字自动增长

第一次写文,请多指教,有何问题及改进建议都可以告诉我-.-Idea来自金山词霸App的单词计数,下面先放图autoNumber.gif如上图,就是,下面开始进入自己设置View自己设置View步骤1. 自己设置属性2. 生成构造方法3. onMeasure…