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. 背景随着各行业引进一系列产品设计和测试的标准化流…

python语言中整型对应的英文_Python基本数据类型详细介绍(转)

1、空(None)表示该值是一个空对象,空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。 2、布尔类型(Boolean) 在 Python中&#xf…

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

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

简单c语言课设计题目,C语言课程设计题目

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼18、学生管理系统(限最多2人完成)使用下面的数据,用C设计一个简单的学籍管理系统,实现出最基本的功能。学生基本信息文件(A.TXT)及其内容:A.TXT文件不需要编程录入数据,可用文本编辑工…

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

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

android文件读写操作布局文件代码,android实现文件读写功能

本文实例为大家分享了android实现文件读写功能的具体代码,供大家参考,具体内容如下读取:public static String _getJsonString(String fileName)throws IOException {if ((fileName null) || fileName.isEmpty()) {return "";}Str…

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

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

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

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

带有JUnit 5支持的Ant 1.10.3发布

我们今天刚刚发布了 1.9.11和1.10.3版本的Ant。 这些下载位于Ant项目的下载页面上 。 这两个版本主要是错误修复版本,尤其是1.9.11版本。 由于几个原因,1.10.3版本是重要的版本。 先前的1.10.2版本无意中引入了许多更改,这些更改导致Ant任务中…

android 号码查联系人,Android联系人查询

我在查询电话簿联系人时遇到问题.我需要做的是获取同时输入电话和电子邮件或特定类型的联系人列表.基本上是这样的:public static final String SELECTION "("ContactsContract.Contacts.HAS_PHONE_NUMBER "1) OR " RawContacts.ACCOUNT_TYPE …

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日发布已无悬念…

JPA技巧:避免N + 1选择问题

介绍 诸如JPA的ORM框架通过帮助我们在对象<->关系数据映射期间避免了很多样板代码&#xff0c;从而简化了我们的开发过程。 但是&#xff0c;它们还会给表带来一些其他问题&#xff0c;N 1是其中之一。 在本文中&#xff0c;我们将简短地探讨该问题以及避免这些问题的一…

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

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

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

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

鸿蒙开发者社区入口,鸿蒙OS 社区

OpenHarmony community欢迎来到OpenHarmony社区&#xff01;Community仓库用于管理OpenHarmony社区治理、开发者贡献指南、开发者贡献协议、社区交流等内容。社区治理组织架构社区交流OpenHarmony社区通过项目管理委员会( Project Management Committee)管理OpenHarmony社区。请…

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

[Python字符串提取] 摘要&#xff1a;根据要求进行字符串的提取&#xff0c;并去重 导入分析所需的库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

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

android 7.0 禁止 imei,Android一些适配

# Android 版本适配重点其他细节请查看官网对应版本&#xff1a;https://developer.android.com/preview## 7.01. 后台优化- 移除了以下静态注册广播通知(动态注册可继续使用)&#xff1a;CONNECTIVITY_ACTION ACTION_NEW_PICTURE ACTION_NEW_VIDEO2. 系统权限更改- Android 7…