http的rest服务简介_REST概念简介

http的rest服务简介

介绍

这篇文章旨在揭开REST(代表性状态转移)Web设计概念的神秘面纱。 REST基于客户端服务器模型。 REST是一组原则,例如描述了如何使用标准来开发Web应用程序。 其主要目的是预期常见的实现问题并组织逻辑客户端和服务器之间的关系。 您可以将其称为一组最佳实践!

在实践中,REST提供有关如何实现Web应用程序接口到Web的指南。 通常,有人说Web应用程序是否以类似REST的方式构建。 REST通常与HTTP关联(或实现),但也可以与其他技术一起实现。 REST是平台和语言独立的。

REST的发明者Roy Fielding说REST旨在实现以下目标:

  • 接口的通用性 –所有Web应用程序都应以相同的方式实现其接口。 通过共享相同的约定,其他应用程序知道如何调用您的约定,并且您知道如何调用它们的约定。 每个新应用程序的学习曲线最少。
  • 组件的独立部署 –一旦实现和部署了应用程序及其REST接口,就必须能够实现或重新实现以及部署任何REST接口,而不必重写或修改现有的REST接口。
  • 封装遗留系统 –未以类似REST的方式实现的现有应用程序可以与REST接口包装在一起,使其成为类似REST的应用程序。
  • 减少交互延迟的中间组件 –例如,为了处理流量,通常将用户/客户端请求分发到多个物理服务器(不要与逻辑服务器混淆)。 这对用户是透明的。 由于REST使用接口,因此轻松实现或添加额外的分层组件(例如物理服务器)来处理最大数量的客户端请求。
  • 强调组件交互的可伸缩性 –这是对先前观点的补充。
  • 加强安全性 –通过Internet交换信息可能会带来风险。 黑客可以使用它来扭曲系统。 REST原则消除了许多此类风险。

概念

  • 资源 –逻辑资源是可以使用全局标识符寻址和引用的任何概念(汽车,狗,用户,发票等)。 通常,在通过HTTP实现REST时,可以使用URI访问每个资源(例如:http://www.mysite.com/invoice/34657)。
  • 服务器 –逻辑服务器是资源以及任何相应的数据存储功能所在的位置。 这样的服务器不处理最终用户界面(GUI)。
  • 客户端 –逻辑客户端向逻辑服务器发出请求以对其资源执行操作。 例如,客户端可以请求资源状态,创建资源,更新资源,删除资源等……客户端不具有资源或相应的数据存储功能。 但是,它们处理最终用户界面(GUI)。
  • 请求和响应 –客户端和服务器之间的交互是通过客户端到服务器的请求以及服务器到客户端的请求响应来组织的。 请求可以包含资源的表示形式。
  • 表示形式 –表示形式是表示资源当前状态的文档。 例如,当客户端请求更新资源时,它也可以是新的期望状态。

原则

以下是适用于类似REST的应用程序的一些原则:

  • 资源的状态保持在服务器内部,而不是客户端内部 –客户端可以请求资源,也可以使用对服务器的请求更新资源。
  • 请求之间没有在服务器上保存任何客户端上下文 –服务器不得存储客户端的状态。 否则,当达到数百万用户时,这将破坏REST的可扩展性目标。 请记住,请求可以分配到多个物理服务器,这可能会导致物理资源消耗问题。
  • 客户端请求包含为它提供服务的所有信息 –无论客户端将哪个请求发送到服务器,它都必须足够完整,服务器才能处理它。
  • 会话状态存储在客户端上 –如有必要,有关逻辑服务器和逻辑客户端之间通信状态的任何信息都必须保存在客户端上。
  • 资源的多种表示可以共存 –用于在请求和响应中表示资源状态的所选格式是免费的(XML,JSON等)。 可以使用多种格式。
  • 响应明确表示其可缓存性 –服务器返回对请求的响应时,客户端可能会缓存也可能不会缓存其中包含的信息。 如果不是,则客户端应发出新请求以获取资源的最新状态。
  • 按需编码 –这是REST中的可选功能。 客户端可以从服务器获取一些额外的代码以丰富其功能。 一个示例是Javascript。

关于会话状态,在物理服务器和物理客户端之间实现登录注销(即身份验证)系统需要在服务器端保存会话信息。 否则,如果将其保存在客户端,则可能会从客户端入侵它。

普遍同意,在客户端和服务器之间实施身份验证所需的任何“资源”都被认为是REST的范围。 这些身份验证资源不必遵循REST原则(有关更多详细信息,请参见此处 )。

通过HTTP的REST

在通过HTTP实现REST时,逻辑REST客户端通常是Web浏览器,而逻辑REST服务器是Web服务器。 REST API(或服务)必须是超文本驱动的。

关于资源ID:

  • 优先使用名词而不是动词来表示资源的类型(猫,狗,汽车等)。
  • 资源的唯一ID是URI ,例如:http://www.mysite.com/invoice/34657。
  • 也可以使用URI访问一组资源,例如:http://www.mysite.com/user/7723/invoices。

当资源引用另一个资源时,在资源表示中使用URI也被认为是一种好习惯。 例如,在表示资源的XML文档中:

<dog self='www.mysite.com/dog/923' >
    <name>Lassie</name>
    <owner ref='www.mysite.com/owner/411' />
</dog>

为了对资源执行操作,简单的HTTP用于在机器之间进行调用。 HTTP知道几种类型的调用:PUT,GET,POST,DELETE,HEAD,CONNECT,PATCH,TRACE和OPTIONS。

但是,REST仅使用四个:PUT,GET,POST和DELETE。

  • GET –客户端可以通过使用资源的URI向服务器发出HTTP GET请求来请求资源的状态。 REST要求此操作不会对资源状态(营养不足)产生任何副作用。
  • PUT –创建新资源。 由于客户端不知道下一个发票号,因此URI可以是:http://www.mysite.com/invoice。 如果资源已经创建,则不会重新创建。 换句话说,例如(并且必须)在http://www.mysite.com/invoice/841上的REST PUT是幂等的。 如果客户端多次调用该PUT,则不能多次创建发票841。
  • POST – REST要求POST客户端请求使用客户端提供的信息来更新相应的资源,或者如果不存在则创建该资源。 此操作不是幂等的。
  • 删除-此操作将永久删除资源。 它是幂等的。

REM:实施
http://www.mysite.com/invoice/add URI不被视为符合REST的惯例。

用于返回资源表示形式的格式(JSON,XML ...)在服务器响应的媒体类型(多用途Internet邮件扩展– MIME)中设置。

为了处理成功或错误问题,HTTP REST建议使用HTTP状态代码之一

附加阅读

参考: 技术说明博客上的JCG合作伙伴 Jerome Versrynge 对REST概念的介绍

翻译自: https://www.javacodegeeks.com/2012/10/introduction-to-rest-concepts.html

http的rest服务简介

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值