zoukankan      html  css  js  c++  java
  • REST|RESTful初步认识

           工作中要用到jersey来实现restful风格的webservice。对于webservice另一定的认知(能够觉得是一种服务,远程调用的组件),可是对于restful笔者根本就木有了解过,restful究竟是什么,是一种技术?规范?于是笔者花了些时间查询了下资料,看了下书,总算有点眉目了。

    什么是REST

           REST(REresentation State Transfer:表象化状态转变)描写叙述了一个架构样式的网络系统,它是一种架构风格、设计风格而不是标准、技术,只不过提供了一组设计原则和约束条件(并且并不强制)。Restful式的架构主要用于client和server交互类的软件,基于这个风格设计的软件能够更简洁,更有层次,更易于实现缓存等机制。如今来说,REST/RESTful都是指的RESTful Web Service。

    REST标准

           REST是面向资源的架构风格,通常基于使用HTTP,URI,和XML以及HTML这些现有的广泛流行的协议和标准。在你的应用系统管理之下的不论什么事物都将被觉得是一个资源(resource),每一个资源必须至少有一个URI(尽量少且具有实际意义)。


    • 资源是有URI来指定的(client也是通过URI来訪问的)。
    • 对资源的操作包含获取、创建、改动、删除等操作,而这些操作正好相应HTTP协议提供的GET、POST、PUT、DELETE方法。
    • 通过操作资源的表现形式来操作w资源。
    • 资源的表现形式则是XML或者HTML。


    REST的要求

            对于实际的web架构假设要实现RESTful风格,有下面4点要求:


    1. 具有client和server结构
    2. 连接协议具有无状态性。
    3. 可以利用Cache机制增进性能
    4. 层次化的系统。

      

          RESTful最重要的原则是:client和server之间的交互在请求之间是无状态的。从client到server的每一个请求都必须包括理解请求所必须的信息。这样server端在请求期间重新启动,client不会得到通知,且无状态请求能够由不论什么可用服务进行回答,client能够缓存数据以改进性能。

          层次化的系统表示组件无法了解它与之交互的中间层以外的组件。通过将系统知识限制在但各层,能够限制整个系统的复杂性,促进了底层的独立性。

          应该注意差别应用的状态和连接协议的状态。HTTP连接是无状态的(也就是不记录每一个连接的信息),而REST传输会包括应用的全部状态信息,因此能够减少对HTTP连接的反复请求资源消耗。

          含状态传输的web服务也称为RESTful web api是一个使用HTTP并遵循REST原则的Web服务(JAX-RS规范定义了java对RESTful Web Service的实现,sun的jersey框架则是多JAX-RS的一个实现,jersey也是兴许要学习的)。

          RESTful web api从下面三个方面资源进行定义:

    • 直观剪短的资源地址:URI,比如:http://XXX.com/resources。
    • 传输的资源:Webserver接受与返回的互联网媒体类型:JSON、XML、TEXT等。
    • 对资源的操作:Web服务在该资源上所支持的一系列请求方法(PUT POST GET DELETE)

    REST长处

          1、可更高效利用缓存来提高响应速度。

          2、无状态性能够让不同server的处理一些列请求中的不同请求,提供server的扩展性。

          3、浏览器就可以作为client,简化软件需求。

          4、相对于其它叠加在HTTP协议之上的机智,REST的软件依赖性更小

          5、不须要额外的资源发现机制。

        

         


  • 相关阅读:
    461. Hamming Distance
    342. Power of Four
    326. Power of Three
    368. Largest Divisible Subset java solutions
    95. Unique Binary Search Trees II java solutions
    303. Range Sum Query
    160. Intersection of Two Linked Lists java solutions
    88. Merge Sorted Array java solutions
    67. Add Binary java solutions
    14. Longest Common Prefix java solutions
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4500580.html
Copyright © 2011-2022 走看看