代码之家  ›  专栏  ›  技术社区  ›  mfaani

触发一个动作POST或PUT

  •  0
  • mfaani  · 技术社区  · 6 年前

    我读过 PUT vs. POST in REST w3 docs 但仍然不确定什么是正确的方法。

    POST /house/123/
    
    {"appliance" : "heater" , "action" : "on"}
    

    PUT /house/123/
    
    {"appliance" : "heater" , "action" : "on"}
    

    如果我只是打开/关闭它怎么办。而是重新启动。把它看作是需要发生的事情。不一定是状态的改变。

    /house/123/
    
    {"action" : "reboot-heater"}
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   VoiceOfUnreason    6 年前

    这两种方法都适用于各种情况。

    可以 任何事情都可以使用它,尽管通常有更好的选择(例如:GET,当操作安全时)。HTML只支持GET和POST,它是web的通用语言。所以你可以推断这篇文章很好。

    替换

    PUT /house/123/
    
    {"appliance" : "heater" , "action" : "on"}
    

    应该是一个完全替代的状态 /house/123 . 那可能是 假设房子的状态包括对其他设备、房间、居住者、位置等的描述,那么您想要的是什么。

    你可以修补房子,用修补文件描述加热器的变化。但这放松了幂等语义,这是PUT的一个重要优点。

    您还可以将其放在不同的目标资源上,但这可能不会为您提供合适的缓存行为。

    如果您想在头脑中正确地理解框架,那么考虑资源是集成域的一部分这一事实是很重要的。RESTAPI是服务器的伪装,假装是一个愚蠢的HTTP键值存储。

    如果你有时间,一本好书是 RESTful Casuistry