aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/glossary/idempotent/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/zh-cn/glossary/idempotent/index.html')
-rw-r--r--files/zh-cn/glossary/idempotent/index.html49
1 files changed, 49 insertions, 0 deletions
diff --git a/files/zh-cn/glossary/idempotent/index.html b/files/zh-cn/glossary/idempotent/index.html
new file mode 100644
index 0000000000..cc8b22c143
--- /dev/null
+++ b/files/zh-cn/glossary/idempotent/index.html
@@ -0,0 +1,49 @@
+---
+title: 幂等
+slug: Glossary/幂等
+tags:
+ - Glossary
+ - WebMechanics
+translation_of: Glossary/Idempotent
+---
+<p>一个HTTP方法是<strong>幂等</strong>的,指的是同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。换句话说就是,幂等方法不应该具有副作用(统计用途除外)。在正确实现的条件下, {{HTTPMethod("GET")}} , {{HTTPMethod("HEAD")}} , {{HTTPMethod("PUT")}} 和 {{HTTPMethod("DELETE")}}  等方法都是<strong>幂等</strong>的,而  {{HTTPMethod("POST")}}  方法不是。所有的 {{glossary("safe")}} 方法也都是幂等的。</p>
+
+<p>幂等性只与后端服务器的实际状态有关,而每一次请求接收到的状态码不一定相同。例如,第一次调用 {{HTTPMethod("DELETE")}} 方法有可能返回 {{HTTPStatus("200")}} ,但是后续的请求可能会返回 {{HTTPStatus("404")}} 。 {{HTTPMethod("DELETE")}} 的言外之意是,开发者不应该使用 <code>DELETE</code> 法实现具有删除最后条目功能的 RESTful API。</p>
+
+<p>需要注意的是,服务器不一定会确保请求方法的幂等性,有些应用可能会错误地打破幂等性约束。</p>
+
+<p><code>GET /pageX HTTP/1.1</code> 幂等的。连续调用多次,客户端接收到的结果都是一样的:</p>
+
+<pre class="notranslate">GET /pageX HTTP/1.1
+GET /pageX HTTP/1.1
+GET /pageX HTTP/1.1
+GET /pageX HTTP/1.1
+</pre>
+
+<p><code>POST /add_row HTTP/1.1</code> 是幂等的。如果调用多次,就会增加多行记录:</p>
+
+<pre class="notranslate">POST /add_row HTTP/1.1
+POST /add_row HTTP/1.1 -&gt; Adds a 2nd row
+POST /add_row HTTP/1.1 -&gt; Adds a 3rd row
+</pre>
+
+<p><code>DELETE /idX/delete HTTP/1.1</code> 幂等的,即便是不同请求之间接收到的状态码不一样:</p>
+
+<pre class="notranslate">DELETE /idX/delete HTTP/1.1 -&gt; Returns 200 if idX exists
+DELETE /idX/delete HTTP/1.1 -&gt; Returns 404 as it just got deleted
+DELETE /idX/delete HTTP/1.1 -&gt; Returns 404</pre>
+
+<h2 id="了解更多">了解更多</h2>
+
+<h3 id="基本知识">基本知识</h3>
+
+<ul>
+ <li>在HTTP协议中<a href="https://tools.ietf.org/html/rfc7231#section-4.2.2">幂等</a>的定义。</li>
+</ul>
+
+<h3 id="技术知识">技术知识</h3>
+
+<ul>
+ <li>常见的幂等方法: {{HTTPMethod("GET")}} , {{HTTPMethod("HEAD")}} ,  {{HTTPMethod("PUT")}} , {{HTTPMethod("DELETE")}} , {{HTTPMethod("OPTIONS")}} </li>
+ <li>常见的非幂等方法: {{HTTPMethod("POST")}} </li>
+</ul>