RESTful API

RESTful API

概念

REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移。

它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一。 他在论文中提到:“我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构。REST指的是一组架构约束条件和原则。” 如果一个架构符合REST的约束条件和原则,我们就称它为RESTful架构。

什么是无状态性

使得客户端和服务器端不必保存对方的详细信息,服务器只需要处理当前的请求,不需了解请求的历史。可以更容易的释放资源。便于服务器提高处理能力。

表述指的什么

REST全称是表述性状态转移,那究竟指的是什么的表述? 其实指的就是资源。任何事物,只要有被引用到的必要,它就是一个资源。表述指的是资源的展现形式,文本资源可以用html/json/xml格式显示,图片资源可以用png/jpg。

要让一个资源可以被识别,需要有个唯一标识,在Web中这个唯一标识就是URI(Uniform Resource Identifier)。

状态转移

REST无状态通信原则,并不是说客户端应用不能有状态,而是指服务端不应该保存客户端状态

优势
  • 使用“_”或“-”来让URI可读性更好
  • 使用/来表示资源的层级关系
  • 使用?用来过滤资源
  • ,或;可以用来表示同级资源的关系

统一资源接口

接口应该使用标准的HTTP方法如GET,PUT和POST,并遵循这些方法的语义

GET、HEAD:安全性(无论请求多少次,都不会改变服务器资源状态)

GET、HEAD、PUT、DELETE:幂等性(无论请求多少次,资源状态结果都是一样的、后面的请求并不会产生比第一次更多的影响)

http方法资源操作幂等性安全性
GET获取truetrue
POST添加/追加falsefalse
PUT创建/修改truefalse
DELETE删除truefalse
总结
POST和PUT 区别

1.幂等性:POST是false,PUT是TRUE

2.用法:POST强调的是添加、追加,还强调“创建子资源”(POST wibo/blog添加一篇博客,不清楚新的博客是wibo/blog/1还是wibo/blog/2,只是添加了),追加(POST /web/blog/1,在序号是1的博客后面追加了新的内容);PUT强调创建/修改,在Server端没有/web/blog的情况下,使用PUT /web/blog请求可以在Server端创建blog资源。blog资源创建好之后,可以使用POST /web/blog来添加一篇新的blog文章,POST请求成功后,我们就拥有了/web/blog/1这个资源,在/web/blog已经存在的情况下,PUT /web/blog可以修改blog资源的设置;而PUT /web/blog/3则可以对某一篇特定的blog文章进行修改)。

PUT和PATCH

PUT用来整体更新一个资源,所以请求中必须包含完整的资源信息。如果缺少部分信息,会导致这部分数据被更新为NULL。

PATCH则是部分更新。仅更新提供的字段,请求中缺少的字段仍保持不变。

HEAD和OPTIONS

HEAD请求用于获取某个资源的元数据(metadata)–比如,该资源是否存在,该资源的内容长度是多少等等。

OPTIONS请求用于获取某个资源所支持的Request类型,在OPTIONS请求的Response中会包含Allow头信息,比如:

Allow: GET HEAD

上述例子表示该资源只支持GET请求与HEAD请求。

参考博客:https://blog.csdn.net/xluren/article/details/40538783

参考书籍:《RESTful Web Services》

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值