zoukankan      html  css  js  c++  java
  • ES 中的 POST 和 PUT 的区别

    0、什么是Restful架构

    比较难说清楚,这部分大雾状态,引ruanyf 理解RESTful架构 的几句总结吧:

    Fielding将他对互联网软件的架构原则,定名为REST,即Representational State Transfer的缩写。我对这个词组的翻译是"表现层状态转化"。

    RESTful API 设计指南 中也提到了一些命名规范、HTTP动词、状态码之类的基础概念,在本文中不是重点,不再赘述。

    1、幂等操作

    幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。
    在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。

    2、POST和PUT的区别

    HTTP的其他几个动词GET、DELETE等就不详谈了,这里主要说下POST和PUT。

    在操作时的区别如下:

    POST /uri 创建
    DELETE /uri/xxx 删除
    PUT /uri/xxx 更新或创建
    GET /uri/xxx 查看

    POST不用加具体的id,它是作用在一个集合资源之上的(/uri),而PUT操作是作用在一个具体资源之上的(/uri/xxx)。

    在ES中,如果不确定document的ID(documents具体含义见下),那么直接POST对应uri( “POST /website/blog” ),ES可以自己生成不会发生碰撞的UUID;

    如果确定document的ID,比如 “PUT /website/blog/123”,那么执行创建或修改(修改时_version版本号提高1) 

    ES与DB的层级关系类比
    
    ES:indices --> types --> documents --> fields
    DB:databases --> tables --> rows --> columns

    在幂等性的区别如下:

    PUT、GET、DELETE是幂等的,由于同一条这样的指令,执行多次结果都一样。比如 PUT /uri/xxx 多次,那么结果和这条指令执行一次效果一样。

    而POST是非幂等的,执行多次更改多次服务器状态。比如POST /uri 多次,那么生成多个UUID的document,执行多次效果当然和执行一次不一样了~

    参考:

    Rest模式——get,put,post,delete含义与区别

    Elastic Search基本知识

  • 相关阅读:
    Java 装箱、拆箱 包装器
    Oracle decode函数 除数为零
    Java并发编程之ConcurrentHashMap
    MessageDigest 类
    Java中关于OOM的场景及解决方法
    Memcached的一些知识
    Solr导入数据库数据
    前端学习笔记(zepto或jquery)——对li标签的相关操作(二)
    前端学习笔记(zepto或jquery)——对li标签的相关操作(一)
    DES加密深度优化——随机生成加密字符串
  • 原文地址:https://www.cnblogs.com/zklidd/p/6114302.html
Copyright © 2011-2022 走看看