关于restful

最近学习angularJS时,遇到了一个名词叫RESTful,对我而言完全是陌生的东西,在网上搜索了半天,遇到的都是理论性的解释,想我这种小白理解起来还是困难的,还好,现在稍稍理解了一点,引用文章http://blog.sina.com.cn/s/blog_6c21f6480102v18s.html

  

  表述性状态转移(英文:Representational State Transfer,简称REST)是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是RESTful。需要注意的是,REST是设计 风格而不是标准。REST通常基于使用HTTP,URI,和XML(标准通用标记语言下的一个子集)以及HTML(标准通用标记语言下的一个应用)这些现 有的广泛流行的协议和标准。
    状态表述转移,在REST的世界中,资源即状态,而互联网就是一个巨大的状态机:每个网页是其一个状态;url是状态的表述;REST风格的应用则是从一个状态迁移到下一个状态的状态转移过程。早期互联网只有静态页面的时候,通过超链接在静态网页间浏览跳转的page->link->page->link…模式就是一种典型的状态转移过程。

    REST 定义了一组体系架构原则,您可以根据这些原则设计以系统资源为中心的 Web 服务,包括使用不同语言编写的客户端如何通过 HTTP 处理和传输资源状态。 如果考虑使用它的 Web 服务的数量,REST 近年来已经成为最主要的 Web 服务设计模式。REST 对 Web 的影响非常大,由于其使用相当方便,已经普遍地取代了基于 SOAP 和 WSDL 的接口设计。

【REST的约定】:
        1,资源是由URI来指定。
        2,对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。
        3,通过操作资源的表现形式来操作资源。
        4,资源的表现形式则是XML或者HTML,取决于读者是机器还是人,是消费web服务的客户软件还是web浏览器。当然也可以是任何其他的格式。
  
【REST的要求】:
        1,客户端和服务器结构
        2,连接协议具有无状态性[1]
        3,能够利用Cache机制增进性能
        4,层次化的系统
        5,随需代码 - Javascript (可选)
    关于状态
        应该注意区别应用的状态和连接协议的状态。HTTP连接是无状态的(也就是不记录每个连接的信息),而REST传输会包含应用的所有状态信息,因此可以大幅降低对HTTP连接的重复请求资源消耗。

【REST的优点】:
    1,可更高效利用缓存来提高响应速度
    2,通讯本身的无状态性可以让不同的服务器的处理一系列请求中的不同请求,提高服务器的扩展性[2]
    3,浏览器即可作为客户端,简化软件需求
    4,相对于其他叠加在HTTP协议之上的机制,REST的软件依赖性更小
    5,不需要额外的资源发现机制
    6,在软件技术演进中的长期的兼容性更好
原文地址:https://www.cnblogs.com/zshome/p/5232083.html