zoukankan      html  css  js  c++  java
  • REST读书手记

     近来看了Jim Webber等REST实战,有一些体会,因此对一些概念做个简要的整理。以下是个人认识与理解,如有偏差,望指正。

    • 1、URI隧道技术。

      通过URI来进行跨越系统边界转移信息的一种方式。它是通过将信息编码到URI中。如:http://www.taobao.com/PlaceOrder?size={xx}&type={xx}&color={xx}这是一种有效的方法。因为无论在Server端还是Client端,它都容易被理解。但是在一般情况下,URI隧道技术并非是Web友好的。因为它没有描述对资源进行操作的方式、以及操作资源时使用的元数据。如果有消费者使用Get操作来操作以上URI而产生资源,那么就完全违背了Web的架构原则。

    • 2、CRUD的WebService。

      在说到CRUD之前,先说说幂等。
      幂等是数学上的概念。无论操作操作多少次,这次操作产生的结果都是一样的。比如:数学中的计算绝对值。

      2.1 C:Create。
      Create 资源通过HTTP POST动作创建。POST在HTTP协议中就被设计为不安全、不幂等。为什么说它不安全?因为消费者将信息POST到服务中,服务就需要为客户端创建资源。这样就有可能改变服务端资源的多少、组织形式等等。为什么说它不幂等呢?
    因为根据HTTP协议的规范,POST信息到服务端后,服务端就需要创建资源。一次POST就创建一个新的资源,即使消费者每次提交的信息完全一致。

      2.2  R:Read。
      Read读取资源。通过HTTP GET操作获取。即安全又幂等。因为它多次获取资源,但是不会对资源的状态进行操作,所以说它是安全的。
      也许有人会说,如博客园获取48小时阅读排行,那按照幂等的说法就应该每次都获取一样的信息,而不会有更新出现。是的,你这种说法没错。如果每次获取资源都一样那就应该不会更新。这里所说的幂等指的是这类资源的性质是一致的。而不是说资源的表述每次都应该一样。

      2.3 U:Update。
      PUT 操作进行资源的更新。它幂等但是不安全。幂等表现在它对资源的多次操作,最终在服务端,按照HTTP标准,应该用客户端上传过来的信息完全替换掉服务端相应的资源。因为这可能导致服务端资源状态发生变更,所以它不安全。
      PUT 操作完成以后,返回给客户端一个200相应消息的详细描述或者204 no content 信息。但后者由于相应信息少,因此效率更高。当然在最新的IETF Internet标准中新增了PATCH动词,但是PATCH是对部分资源发送补丁信息,服务端针对这些信息对资源进行部分更新。

      2.4 D:DELETE.
      DELETE删除资源。与Update操作一样,幂等但是不安全。注意:这里的DELETE不一定是真要是服务端删除某一资源,只是表明REST某一客户端对这一资源已经不再关心,但是这些资源可能会被其他客户端所用到。

    • 3、校正资源状态。

      在分布式系统应用中,经常出现多个消费者与一个资源交互的应用场景。这样就有可能导致一个问题的发生。比如:一个用户对资源进行操作而改变了它的状态,而另一消费者没有通过Get获取到最新状态,同样去操作这一资源就不会得到想要的结果。
      HTTP提供了一种简单但是强大的机制来解决这个问题。那就是通过实体标签(Entity Tag)与条件请求头(Conditional Request Header)If-Match或If-None-Match的形式,对所请求的资源进行校正。一个实体标签就是一个不透明的令牌,使服务端与资源关联起来,以便在资源的生命周期中唯一。可以通过Hash算法来指定ETag值。
      If-Match或If-None-Match很好理解,如果匹配则如何,如果不匹配又如何处理。
      通常If-Match:"*",来指明资源存在,If-None-Match:"*"则指明资源不存在。
      篇幅有限,这节就这么多了。希望对你理解REST有些帮助。
      下一节将介绍:超媒体服务、以及相关的一些概念知识点。

    随笔档案 - 2011年11月

    Jquery+JSON消费REST WCF4.0 服务(带源码)

    2011-11-25 19:39 by tyb1222, 1684 visits, 网摘收藏编辑
    摘要:作为一种以HTTP协议为基础的WCF 服务,只要客户端能模拟进行HTTP请求,都能成为服务的消费者。之前写过《对Jquery+JSON+WebService的一点认识》,觉得在REST是基于HTTP协议的,AJAX的操作也应该一样。但是事实上还是有些差别的。由于网上资源聊聊无几,因此记录下自己的个人体会。希望对你有些帮助! 本篇主要讲述的类容为在ASP.NET中,如何通过AJAX来消费REST服务。 使用JQUERY框架模拟AJAX请求时,操作类型主要有GET、POST两种。本节也以这两种常用的方式来进行介绍。(type (String) : (默认: "GET") 请求方 阅读全文

    在REST WCF中使用HTTP Header进行数据交互

    2011-11-23 18:42 by tyb1222, 785 visits, 网摘收藏编辑
    摘要:我们知道,在HTTP协议的报文头Header中存放着许多信息。如果你读过老A的《通过添加HTTP Header实现上下文数据在WCF的自动传递》,那你一定知道如何通过底层的扩展来实现如何在REST WCF中使用HTTP Header来进行数据交互。这对于大家更多的了解WCF的底层机制有很大的帮助作用。 窃以为:在实际的REST WC应用中,想通过Header头来实现数据交互不用那么麻烦。MicroSoft在它所提供的库中就已经为我们封装好了一些接口,可以很容易的让我们实现这一功能。 HTTP Header报文头可以在Server与Client之间传递很多数据。我们可以获取这些数据然后进... 阅读全文

    REST WCF 使用Stream进行Server与Client交互

    2011-11-18 19:08 by tyb1222, 904 visits, 网摘收藏编辑
    摘要:上节介绍了REST WCF 4.0相比3.5支持更多的交互格式,本篇就说说在Server与Client间通过最原始的流的格式进行通讯。开篇之前,介绍REST WCF 的一个特性:DescriptionAttribute。对这个特性相信都很熟悉,它的作用如同在WebService中通过它来标注出某个接口的描述信息,在REST WCF中同样如此。将它标注在REST WCF 接口中后,在help页面中将会显示接口的描述信息。 如以往,本篇将通过Demo的形式介绍如何在REST WCF中使用Stream。Demo的功能有以下几点: 1、通过Stream的形式获取服务端的图片资源,并保存到本地 ... 阅读全文

    REST WCF 4.0 新特性简介

    2011-11-16 17:35 by tyb1222, 994 visits, 网摘收藏编辑
    摘要:前面几节介绍了REST WCF 3.5的一些基本特性以及使用方式,在WCF4.0的时代,也做了对REST的支持。相比3.5时代,4.0改进体现有如下几点:增加对路由的支持对缓存的支持。帮助(help)页面的改进。消息错误处理消息格式的多样性如(XML\JSON\ATOM\TEXT\BINARY)简化操作。 本节讲述的重点为如何使用路由注册REST服务、缓存以及help页面 1、使用路由注册服务。 WCF4.0中新增的路由服务可以帮助直接注册服务,而不再需要SVC的文件。 需要注意的是,使用路由注册服务时必须启动ASP.NET的兼容模式。即设置aspNetCompatibilityE... 阅读全文

    .Net Remoting与WCF实现Server与Client通讯比较

    2011-11-12 20:26 by tyb1222, 1048 visits, 网摘收藏编辑
    摘要:.Net Remoting是微软早前推出的一项分布式通讯技术框架,在.Net架构的程序中有着比较广泛的应用。在WCF中,已经集成了Remoting的技术。不过,他们有着很多相同的概念,如:信道(Channel)、代理(Proxy)、寄宿(host)等。在如今仍有一些分布式系统应用中运行着由Remoting技术构建的系统。本文将描述在服务端与客户端的交互中,他们各自的实现方式。 1、Remoting的实现。 在Remoting中,远程对象是一个重要的概念。服务端通过将它注册到制定的信道中,客户端服务... 阅读全文

    Jquery部分函数说明

    2011-11-10 00:48 by tyb1222, 18 visits, 网摘收藏编辑
    摘要:1、find函数:搜索所有与指定表达式匹配的元素。这个函数是找出正在处理的元素的后代元素的好方法。 里面搜索的表达式不应该用ID,那样就找不到指定元素了。 阅读全文

    对REST架构 风格下WCF的一点补充

    2011-11-09 20:47 by tyb1222, 831 visits, 网摘收藏编辑
    摘要:这几天思考REST 架构下POST复杂数据类型的问题查了写资料,以及通过与WCF 大牛------Frank Xulei进行了一番交流对REST有了一些进一步的认识。本篇作为:1、REST与SOA两种架构下WCF的异同比较 2、通过HTTP协议标准动作使用REST WCF 服务这两篇的一个补充。 起因是这样的:在SOA架构下,一般都是通过定义服务契约的方式最终通过WSDL将元数据对外发布,以供调用者使用。也就是说在SOA中,通过服务契约定义向外公布服务对外提供的操作。如果先学习SOA,然后接触REST,可能会在使用REST的时候会沿用SOA下的一些习惯。我在进行REST架构下的WCF学... 阅读全文

    通过Fiddler测试你的 REST WCF服务

    2011-11-07 18:23 by tyb1222, 1164 visits, 网摘收藏编辑
    摘要:Fiddler是一款强大的软件,在实际的开发中它能帮助我们跟踪HTTP请求,记录发送请求和获取到请求结果的数据。使用VS2008的时候,一直是用IE6浏览调试,使用Fiddler也正常。但本人一直习惯用FireFox,可怜用它访问的时Fiddler却不能帮助记录下数据(FireFox版本:4.0)。还以为Fiddle只能在IE下使用,试了试chrome,发现也可以用。言归正卷,本篇针对上篇中的REST服务(具体例子以及带代码采用上节中介绍的:通过HTTP协议标准动作使用REST WCF 服务)使用Fiddler简要做一个介绍。首先大致说说Fiddler的界面,如图: ... 阅读全文

    通过HTTP协议标准动作使用REST WCF 服务

    2011-11-02 18:25 by tyb1222, 1079 visits, 网摘收藏编辑
    摘要:前几节介绍了REST WCF 服务的一些基本的特点,本节说明一下,如何基于HTTP的标准动作来使用REST WCF 服务。由于RESTful服务的架构风格基于HTTP协议,并且其设计原则中明确指出:通过通用的连接器接口来使用资源。对于REST架构风格的服务,主要通过它8个动作中的4个来使用资源,即:GET,POST,PUT,DELETE。 在RESTful 服务中,GET,POST,PUT,DELETE的标准操作如下: GET:获取资源 POST:修改资源 PUT:创建资源 DELETE:删除资源本节涉及的要点如下:1、如何定义接口规范,使客户端通过能通过HTTP协议的标准动作来... 阅读全文
  • 相关阅读:
    TableCellRenderer和TableCellEditor(一)
    python 哔哩哔哩学习
    Pwn_11 Got 劫持
    Pwn_10 Format String Attack
    Pwn_9 作业讲解
    Pwn_8 ROP(3)——Stack Migration
    堆栈是个什么🐴
    pwntools 文档学习
    Pwn_7 ROP (2)
    socket.error: [Errno 98] Address already in use
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2279658.html
Copyright © 2011-2022 走看看