restful 笔记01

restful 笔记

如何保持可见性?

(a)使用HTTP方法(例如GET,POST,PUT)时,其语义要与HTTP所规定的语义保持一致,并添加适当的标头来描述请求和响应.

(b)使用适当的状态码和状态消息,以便代理,缓存和客户端可以判断请求的结果.状态码是一个整数,状态消息是文本

 

如何保证安全性和幂等性?

实现GET,OPTIONS 和HEAD 方法时,不要引起任何副作用.当客户端重新提交一个GET,HEAD,OPTIONS,PUT或DELETE请求时,确保服务器提供同样的表述形式,并发情况除外.

GET,OPTIONS 和HEAD 看做是只读操作

除了POST以外的所有方法都是幂等性

安全性和幂等性均不保证反复请求能拿到相同的response。以 DELETE 为例,第一次DELETE返回200表示删除成功,第二次返回404提示资源不存在,这是允许的。

 

如何保证DELETE 方法是幂等性?

这意味着就算服务器在前一个请求中已经删除了资源,它也必须返回200 响应码.

但实际上,要把DELETE实现为幂等操作,需要服务器追踪所有已经删除的资源.否则,它可能会返回一个404响应码.

解决方法:

不做物理删除,而只是修改状态而已.

 <RESTful Web Services Cookbook.pdf>下载地址:
http://pan.baidu.com/s/1dD4qn6L

参考:http://www.ruanyifeng.com/blog/2014/05/restful_api.html

http://article.gitos.cn/2015/Aurthur/Principles-of-RESTful-API-Design.html?utm_source=tuicool&utm_medium=referral

时间: 2024-11-02 04:21:45

restful 笔记01的相关文章

《Effective C++》读书笔记01:视c++为一个语言联邦

都说c++难学.确实,这是由于c++过于庞大了,Meyers将庞大的c++分成了四个部分: 1.c语言: 2.经典的面向对象c++:包括了class,封装,继承,多态,虚函数等经典的OO思想: 3.c++模板编程,也称为泛型编程,这一部分相对内容较新,我个人正在学习<C++ Templates>加深理解: 4.STL:vector,list,map,iterator相信大家都很熟悉了吧:) 你看,这里的每一个部分都值得你花上半年的时间去理解,那些所谓的<XX天精通C++ >根本就不

Java 笔记01

面向对象主要针对面向过程. 面向过程的基本单元是函数.   什么是对象:EVERYTHING IS OBJECT(万物皆对象)   所有的事物都有两个方面: 有什么(属性):用来描述对象. 能够做什么(方法):告诉外界对象有那些功能. 后者以前者为基础. 大的对象的属性也可以是一个对象.   为什么要使用面向对象: 首先,面向对象符合人类看待事物的一般规律. 对象的方法的实现细节是屏蔽的,只有对象方法的实现者了解细节. 方法的定义非常重要.方法有参数,也可能有返回值.   注意区分:对象(本身)

vSphere笔记01~02

Vmware vsphere 虚拟化 云和大数据的底层!!!! 分类 1.开源:openstack:Linux:难(无图形化) nosqleasystack公司 2.企业版本:vsphere sdn!!!(基于openstack) vsphere套件6.5 esxi主机(vkernel) 装在物理服务器 基于Linux的系统(裁剪版)(严格意义上就叫系统而不叫操作体统) !!!!物理机--esxi--vm--os--app(openstack省掉了os) client web client Wi

FC网络学习笔记01

1.Fibre Channel 也就是"网状通道"的意思,简称FC,可以称其为FC协议.FC网络或FC互联. 2.像TCP/IP一样,FC协议集同样具备TCP/IP协议集以及以太网中的概念,比如FC交换.FC交换机.FC路由.FC路由器.SPF路由算法等.完全可以类比的看待TCP/IP协议以及FC协议,他们都遵循OSI模型.   FC协议体系物理层 1)具有比较高的速度,从1Gb/S.2Gb/S.4Gb/S到当前的8Gb/S 2)为了保证传输过程中的电直流平衡.时钟恢复和纠错等特性,其

scala 学习笔记(01) 函数定义、分支、循环、异常处理、递归

package yjmyzz import scala.io.StdIn object ScalaApp { def main(args: Array[String]) { println("please input something,press Enter to exit:") //每一行最后加不加分号都可以 readKeyboard //注:无参数的函数调用,加不加括号都行 println(add(1, 2) + "\n------\n") println(d

Effective java 第2版 - 笔记(01) 单例(Singleton)的枚举(enum)实现

直接上代码: 1 public enum Boss { 2 3 INSTANCE; 4 5 private String name; 6 7 public void doSomeThing() { 8 System.out.println(name + " is doing something now..."); 9 } 10 11 public String getName() { 12 return name; 13 } 14 15 public void setName(Stri

JQuery 学习笔记01 JQuery初接触_jquery

一.下载官方网址是http://jquery.com/官方下载地址:http://docs.jquery.com/Downloading_jQuery里边有当前版本和历史版本的下载,可以下载下来部署在自己的服务器上上面也有Google\Microsoft\jQuery的CDN(Content Delivery Network)地址,由于目前jQuery的广泛使用,选择CDN地址可以充分利用缓存和这些互联网大佬们的带宽和服务器资源.官网上下载有两种版本Compressed(Minified ver

【VB6笔记-01】 读取Excel绑定到DataGrid

Private Sub cmdOpen_Click() CommonDialog1.Filter = "Excel???t(*.xlsx)|*.xlsx" CommonDialog1.DialogTitle = "????" CommonDialog1.ShowOpen Me.txtFilePath.Text = CommonDialog1.FileName Dim DBconn As ADODB.Connection Dim strSQL As String Di

Samsung_tiny4412(驱动笔记01)----linux 3.5,U-Boot,Busybox,SD卡启动环境搭建

/*********************************************************************************** * * linux 3.5,U-Boot,Busybox,SD卡启动环境搭建 * * 声明: * 1. 本系列文档是在vim下编辑,请尽量是用vim来阅读,在其它编辑器下可能会 * 不对齐,从而影响阅读. * 2. 以下所有的shell命令都是在root权限下运行的; * 3. minicom(U-Boot)指的是用minico