为什么 put 方法在 Asp Net Web Api 中并不总是幂等的?

Why put method is not always idempotent in Asp Net Web Api?

据我所知put是幂等的,即多次应用此方法与一次应用相同。请考虑以下代码:

public class ValuesController : ApiController
{
    private static List<string> _list = new List<string>();

    public void Put([FromBody]string value)
    {
        _list.Add(value);
    }

}

从这个例子中可以清楚地看出,Put 方法在这里不是幂等的,多次应用它会导致 _list 有多个值。此外,我可以以类似的方式实现其他幂等方法,如 get 或 delete。为什么put方法总是幂等的?

PUT 应该是幂等的。如果您的 PUT 实现不是幂等的,那么它就违反了 HTTP 规范。

但是,这并不意味着您可以编写不符合规范的实现。

从技术上讲,这不再是 HTTP