zoukankan      html  css  js  c++  java
  • 第六篇 常用请求协议之post put patch 总结

    [转]https://blog.csdn.net/sshfl_csdn     感谢愿意总结分享的人,thanks

    idempotent 幂等的

    如果一个方法重复执行多次,产生的效果是一样的,那就是idempotent的;
    idempotent的意思是如果相同的操作再执行第二遍第三遍,产生结果还是一样的。

    POST 方法

    用来创建一个子资源,如 /api/users,会在users下面创建一个user,如users/1;
    POST方法不是幂等的,多次执行,将导致多条相同的用户被创建(users/1,users/2 ...
    而这些用户除了自增长id外有着相同的数据,除非你的系统实现了额外的数据唯一性检查)

    PUT 方法

    PUT比较正确的定义是 Replace (Create or Update),
    例如 PUT /items/1 的意思是替换 /items/1 ,如果已经存在就替换,沒有就新增;
    因此,PUT方法一般会用来更新一个已知资源,除非在创建前,你完全知道自己要创建的对象的URI

    Post 与 Put 区别

    在HTTP中,PUT被定义为idempotent的方法;
    POST则不是,这是一个很重要的区别
    
    举例说明:
    POST /api/articles
    PUT /gists/id/stars
    如果产生两个“资源”,就说明这个服务不是idempotent(幂等的),因为多次使用产生了副作用---应该使用POST方法;
    如果后一个请求把第一个请求**覆盖**掉了,那这个服务就是idempotent的 ---应该使用PUT方法。

    PATCH 方法

    PATCH方法是新引入的,是对PUT方法的补充,用来对已知资源进行"局部更新"

    需要注意的地方

    "语义" 而非 风格;是语义的问题,换句话说:
    也就是这取决于这个REST服务的行为是否是idempotent(幂等的)
    
    // 但是这个只是在语义上,同时不要太苛求语义
    DELETE: 刪除,无论如何 资源 最后都将不复存在
    PUT:    替换(新增或完整更新)
    PATCH:  部分更新
  • 相关阅读:
    Sherlock and Squares
    [leetcode] Super Ugly Number
    [leetcode] Ugly Number II
    [leetcode] Ugly Number
    [leetcode] Burst Balloons
    菜根谭#268
    菜根谭#267
    菜根谭#266
    菜根谭#265
    菜根谭#264
  • 原文地址:https://www.cnblogs.com/victorm/p/9199161.html
Copyright © 2011-2022 走看看