为什么 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
据我所知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