Http与Restful之间的关系

普通的接口:URL应对是某种操作,对数据操作,    切换URL地址
restful风格的接口,url对应一条数据,对数据的操作,切换http请求方法实现的

RESTful:一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
RESTful风格更能清晰的去告诉别人这个操作是做什么。你当然可以使用get方式取删除数据,但是没有delete来的清晰。
RESTful Api即满足RESTful风格设计的API:
restful使用http code代表状态
resetful最重要的是资源思想,他之所以灵活,是因为他很少参与业务逻辑,只定义资源操作。
WEB开发中,使用JSON-RPC好,还是RESTful API好?
restful接口和普通接口区别在于RESTful接口是一种架构设计风格,提供了设计原则和约束条件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。对于同一个URL,根据method请求行为的不同,后端需要处理的内容不同。有GET、POST、PUT、DELETE 几种method请求方法、

传统普通接口模式:
api/get.php  获取数据
api/update.php   更新数据
api/delete.php  删除数据

RESTful接口模式:
只需要这一个URL接口

GET 方式请求 api/state  获取数据
POST 方式请求 api/state  添加数据
PUT 方式请求 api/state  更新数据
DELETE 方式请求 api/state  删除数据
1、看URL就知道要什么
2、看http method就知道干什么
3、看http status code就知道结果如何
也可以减少前后端开发人员沟通成本。

简介
通常,REST和HTTP是可以互换使用的。在本文中,我们将研究REST、HTTP的真正含义以及它们为什么是两个不同的东西。

什么是REST?
REST全称Representational State Transfer表述性状态转移,它最早是在罗伊·菲尔丁(Roy Fielding)的论文中提出。在论文中,菲尔丁提出了他对于理想的万维网软件体系结构的构想。

REST不是一种标准或者规范,相反,菲尔丁将REST描述为分布式超媒体系统的体系结构。他认为RESTful结构具有多个属性,因此REST非常适合大型的互联系统,例如Internet。

接下来,我们将解读定义RESTful系统的属性。

资源和表示
RESTful系统的核心构建块是资源,资源可以是网页、视频流、图像等。资源甚至可以是抽象的概念,如数据中用户的列表或特定位置的天气预报。唯一真正的限制是系统中的每个资源都是唯一且可标识的。
另外,资源可能有很多种表示形式,在C/S(客户端/服务器)架构中,服务负责管理资源的状态,但是客户端可以选择他们自己希望与之交互的表示方式。

统一接口
统一接口是RESTful系统独特的属性之一,它要求客户端使用同一套标准操作来访问所有的资源。
统一接口的好处在于易于创建与其提供的服务脱钩的实现,这使得服务可以在不影响客户端的情况下发展。需要权衡的是,统一的接口可能会对某些系统增加了不必要的限制,或要求服务器执行的效率低于专门操作的效率,如果Spring Cloud的服务调用是没有Dubbo的效率高。

无状态
RESTful系统中,所有的操作都应该是无状态的。这意味着从客户端到服务器的每个调用都不得依赖任何的共享状态,这也意味着对服务器的每个请求都必须包含服务器完成请求所需要的所有数据。
REST中的无状态要求让位于几个关键属性:
可见性:可以单独分析每个请求,以监视系统运行状况和响应速度
可靠性:系统故障时,更容易从中恢复
可拓展性:简单地添加更多的服务器资源以处理更多的请求
但是,这也会带来一个折衷,即当客户端与服务器进行多次交互式时,对武器的请求会更大,并包含重复数据。

什么是HTTP?
与REST不同,超文本传输协议(HTTP)是具有明确定义的、约束的标准。HTTP是为互联网上大多数日常教育提供的通信协议:

Web浏览器加载网页
串流影片
使用移动设备关闭家中的灯
显然REST和HTTP不一样。HTTP是Internet工程任务组维护的协议,尽管它与REST不同,但是它就有RESTful系统的许多功能。这并非偶然,因为Roy Fielding是RFC for HTTP的原始作者之一。
重要的是RESTful系统不需要使用HTTP,碰巧的是,HTTP是一个很好的开始,因为它表现出许多RESTful的品质。

让我们仔细看看使HTTP成为RESTful协议的一些特质。

网站和媒体类型
在HTTP的世界中,资源通常是远程服务器上的文件。这些可以是HTML、CSS、JavaScript、图形以及构成现在网页的所有其他文件。每个文件都可以视为可以使用唯一URL寻址的独特资源。
但是,HTTP不仅用于文件。资源一词还可以指远程服务器上的任意数据:客户、产品、配置、设置等等。这就是为什么HTTP在构建现代API方面变得流行的原因,它提供了一种一直且可预测的方式来访问和操作远端数据。

此外,HTTP允许客户端为某些资源选择不同的表示形式。在HTTP中,使用表头和各种所知的媒体类型来处理的。
例如,一个天气网站可以为同一个天气预报提供HTML和JSON来表示。一个适合在Web浏览器中显示,而另外一个适合给另外一个系统用来存档历史天气数据。

HTTP方法
HTTP遵循REST原理的另外一种方式是,它为每种资源系统相同的方法集。尽管有近十二种可用的HTTP方法,但是大多服务器主要处理映射CRUD操作的四种方式是:POST、GET、PUT、DELETE。
提前了解了这些操作可轻松创建、使用Web服务的客户端。与SOAP协议相比,HTTP可以使一直到的操作集保持最小且一致,而SOAP协议的操作可以进行自定义且不受限制。
当然,单个Web服务可能选择拒绝某些资源的某些方法,或者他们需要对某些敏感资源进行身份验证。无论如何,一组可能的HTTP方法是众所周知的,并且不能在一个网站之间变化。

HTTP并非始终是RESTful
但是,对于HTTP实现RESTful原理的所有方式,都有可能也违反它们的方式。
首先,REST不是通讯协议,而HTTP是通讯协议。
接下来,也许最具有争议的是,大多数现在Web服务器都是用cookie和会话存储状态。当使用这些引用服务端的状态时,这就违反了无状态原则。
最后,使用URL(由IETF定义)可能会使Web服务器范围统一接口。例如:下面的URL:
https://toolkit.net.cn/api/v1/customers?id=17&action=clone
尽管必须使用诸如GET之类的预定义的HTTP方法之一来请求此URL,但是它正在使用查询参数来提供其他操作。这种情况,我们要指定一个名为clone的操作,该操作显然不适合用于系统中的所有资源。如果没有更详细的说明,也不清楚响应的是什么。

结论
虽然许多人交替使用使用术语REST和HTTP,但事实上他们是不同的东西。REST是指一组特定体系结构样式的属性。而HTTP是定义良好的协议,它切好表现除了RESTful系统的许多功能。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值