比较难说清楚,这部分大雾状态,引ruanyf 理解RESTful架构 的几句总结吧:html
Fielding将他对互联网软件的架构原则,定名为REST,即Representational State Transfer的缩写。我对这个词组的翻译是"表现层状态转化"。git
RESTful API 设计指南 中也提到了一些命名规范、HTTP动词、状态码之类的基础概念,在本文中不是重点,再也不赘述。github
HTTP的其余几个动词GET、DELETE等就不详谈了,这里主要说下POST和PUT。web
在操做时的区别以下:编程
POST /uri 建立
DELETE /uri/xxx 删除 PUT /uri/xxx 更新或建立 GET /uri/xxx 查看
POST不用加具体的id,它是做用在一个集合资源之上的(/uri),而PUT操做是做用在一个具体资源之上的(/uri/xxx)。api
在ES中,若是不肯定document的ID(documents具体含义见下),那么直接POST对应uri( “POST /website/blog” ),ES能够本身生成不会发生碰撞的UUID;服务器
若是肯定document的ID,好比 “PUT /website/blog/123”,那么执行建立或修改(修改时_version版本号提升1) restful
ES与DB的层级关系类比 ES:indices --> types --> documents --> fields DB:databases --> tables --> rows --> columns
在幂等性的区别以下:架构
PUT、GET、DELETE是幂等的,因为同一条这样的指令,执行屡次结果都同样。好比 PUT /uri/xxx 屡次,那么结果和这条指令执行一次效果同样。ide
而POST是非幂等的,执行屡次更改屡次服务器状态。好比POST /uri 屡次,那么生成多个UUID的document,执行屡次效果固然和执行一次不同了~