From 310fd066e91f454b990372ffa30e803cc8120975 Mon Sep 17 00:00:00 2001 From: Florian Merz Date: Thu, 11 Feb 2021 12:56:40 +0100 Subject: unslug zh-cn: move --- files/zh-cn/glossary/idempotent/index.html | 49 ++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 files/zh-cn/glossary/idempotent/index.html (limited to 'files/zh-cn/glossary/idempotent') 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 +--- +

一个HTTP方法是幂等的,指的是同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。换句话说就是,幂等方法不应该具有副作用(统计用途除外)。在正确实现的条件下, {{HTTPMethod("GET")}} , {{HTTPMethod("HEAD")}} , {{HTTPMethod("PUT")}} 和 {{HTTPMethod("DELETE")}}  等方法都是幂等的,而  {{HTTPMethod("POST")}}  方法不是。所有的 {{glossary("safe")}} 方法也都是幂等的。

+ +

幂等性只与后端服务器的实际状态有关,而每一次请求接收到的状态码不一定相同。例如,第一次调用 {{HTTPMethod("DELETE")}} 方法有可能返回 {{HTTPStatus("200")}} ,但是后续的请求可能会返回 {{HTTPStatus("404")}} 。 {{HTTPMethod("DELETE")}} 的言外之意是,开发者不应该使用 DELETE 法实现具有删除最后条目功能的 RESTful API。

+ +

需要注意的是,服务器不一定会确保请求方法的幂等性,有些应用可能会错误地打破幂等性约束。

+ +

GET /pageX HTTP/1.1 幂等的。连续调用多次,客户端接收到的结果都是一样的:

+ +
GET /pageX HTTP/1.1
+GET /pageX HTTP/1.1
+GET /pageX HTTP/1.1
+GET /pageX HTTP/1.1
+
+ +

POST /add_row HTTP/1.1 是幂等的。如果调用多次,就会增加多行记录:

+ +
POST /add_row HTTP/1.1
+POST /add_row HTTP/1.1   -> Adds a 2nd row
+POST /add_row HTTP/1.1   -> Adds a 3rd row
+
+ +

DELETE /idX/delete HTTP/1.1 幂等的,即便是不同请求之间接收到的状态码不一样:

+ +
DELETE /idX/delete HTTP/1.1   -> Returns 200 if idX exists
+DELETE /idX/delete HTTP/1.1   -> Returns 404 as it just got deleted
+DELETE /idX/delete HTTP/1.1   -> Returns 404
+ +

了解更多

+ +

基本知识

+ + + +

技术知识

+ + -- cgit v1.2.3-54-g00ecf