REST是什么意思? 这是什么,为什么现在变大了?
一世 理解(我认为)RESTful-ness背后的基本理念。 使用HTTP方法在语义上 – GET获取,PUT放,DELETE删除,等等…对吗? 我认为我理解了REST背后的想法,但我认为我很困惑,与HTTP实施的细节。 rest的动力是什么?为什么这成为重要的事情? 人们真的一直在使用它很长一段时间,在我的手电筒从未闪耀的互联网angular落?
Google谈到提到Atom Publishing Protocols与RESTful实现有很多协同作用。 对此有什么想法?
这是REST可能的样子:
POST /user fname=John&lname=Doe&age=25
服务器响应:
201 Created Location: /user/123
将来,您可以检索用户信息:
GET /user/123
服务器响应(假定一个XML响应):
200 OK <user><fname>John</fname><lname>Doe</lname><age>25</age></user>
更新:
PUT /user/123 fname=Johnny
这是我的观点
制作RESTful服务的吸引力在于,我们使用四种方法 (创build,检索,更新,销毁)来标准化,而不是使用几十种function方法创buildWeb服务:
- POST
- 得到
- 放
- 删除
REST越来越stream行,因为它也代表了应用程序层的消息格式标准化。 虽然HTTP使用REST的四个基本动词,但是HTML的通用HTTP消息格式不是用于构build应用程序的合同。
我听说的最好的解释是TCP / IP与RSS的比较。
以太网代表了物理networking的标准化。 互联网协议(IP)代表了更高层的标准化,并具有几种不同的风格(TCP,UDP等)。 定义了“传输控制协议”(保证数据包传输)的通信协议,为应用层提供了一整套新的服务(FTP,Gopher,Telnet,HTTP)。
在这个比喻中,我们已经采用了XML作为“协议”,现在我们开始标准化消息格式。 RSS正在迅速成为许多RESTful服务的基础。 Google的GData API是一个RSS / ATOM版本。
“桌面小工具”是这种炒作的一个很好的实现:一个简单的客户端可以使用通用的API和消息传递标准来消费基本的networking内容或复杂的混搭。
目前HTTP使用不足,误用。
我们通常只使用两种HTTP方法:GET和POST,但还有一些:DELETE,PUT等( http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html )
因此,如果我们拥有由RESTful URL定义的资源(应用程序中的每个域对象具有http://yoursite.com/path/to/the/resourceforms的唯一URL)以及体面的HTTP实现,则可以在您的域写作句子:;
获取http://yoursite.com/path/to/the/resource
删除http://yoursite.com/path/to/the/resource
POST http://yoursite.com/path/to/the/resource
等等
build筑很好,一切。
但是这只是理论上的观点,现实世界中的情景都是在我的回答中张贴的所有链接中描述的。
让我们回顾历史,谈谈Roy Fielding Research – “ build筑风格与基于networking的软件架构devise ”。 它是一个很大的文件,谈论了很多各种各样的东西。 但是作为一名标准工程师,您想如何解释REST(Representational State Transfer)的清晰含义,以及它的build筑风格是什么。
这是我的方式来解释 – “什么是REST”。
看到这个万维网上运行的各种硬件,如路由器,服务器,防火墙,云基础设施,交换机,局域网,广域网。 这个WWW(万维网)的总体目标是分配超媒体 。 这个世界各地的networking配备了各种服务,如基于信息的服务,网站,YouTube频道,dynamic网站,静态网站。 这个世界范围的networking使用HTTP协议通过客户端/服务器机制在世界各地分配超媒体。 此HTTP协议在TCP / IP或其他适当的networking堆栈上工作。
这个HTTP协议使用八种方法来pipe理“分发协议”或“分发的架构风格”。 这八个方法是:OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE,CONNECT。
但是,在这个HTTP之上,Web应用程序正在使用自己的方式分发超媒体,例如,Web应用程序使用与客户端高度绑定的Web服务,而服务器或Web应用程序正在使用自己devise的客户端/服务器机制的方式这种分布式通道位于HTTP之上。
Roy Fielding Research说,这八种方法的HTTP,OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE,CONNECT都是如此成功地将HyperMedia提供给全球各地的硬件资源和networking栈/服务器机制,为什么我们不使用类似的策略与我们的基于Web的应用程序。 在这个GET,POST,DELETE和PUT被使用最多。 所以四种方法向全世界传递超媒体。
在REST API 架构样式应用程序中,Web应用程序需要用所有对象实体集合(例如Customer是一个实体)和可能的操作(例如“基于客户信息的检索”)devise业务逻辑(驻留在Tomcat,Apache HTTP等服务器中)在一个客户ID“)上。 这些实体可能的操作应该devise成四个主要的操作或方法,即创build,检索,更新,删除。 这些实体被称为资源,这些实体被呈现或以诸如JSON或XML之类的forms呈现 。 我们有客户(浏览器)谁调用创build,检索,更新,删除(CRUD)方法来执行适当的function,在这种资源驻留在服务器。
但是正如所解释的表示的概念,意味着业务逻辑或对象的实体被表示的方式。 但是“国家转移”呢?
国家转移 ,它谈到了从客户端到服务器的“通信状态”。 它讨论了从客户到服务器的“状态转移”的devise,例如客户首先调用操作“创build客户”,然后调用客户的下一个状态或“客户”可以呼叫的客户状态。 其状态可能是“检索创build的客户端数据”,“更新客户端数据”或什么
REST是定义和解决资源的架构。
为了最好地理解REST,你应该看看面向资源的体系结构(ROA) ,它为实际实现REST体系结构提供了一套准则。
REST不需要通过HTTP,但它是最常见的。 REST最初是由HTTP的创build者之一创build的。