aboutsummaryrefslogtreecommitdiff
path: root/files/ru/glossary/idempotent
diff options
context:
space:
mode:
authorFlorian Merz <me@fiji-flo.de>2021-02-11 14:51:05 +0100
committerFlorian Merz <me@fiji-flo.de>2021-02-11 14:51:05 +0100
commitc058fa0fb22dc40ef0225b21a97578cddd0aaffa (patch)
treedf20f8b4c724b61cb9c34cdb450a7ac77d690bd0 /files/ru/glossary/idempotent
parent8260a606c143e6b55a467edf017a56bdcd6cba7e (diff)
downloadtranslated-content-c058fa0fb22dc40ef0225b21a97578cddd0aaffa.tar.gz
translated-content-c058fa0fb22dc40ef0225b21a97578cddd0aaffa.tar.bz2
translated-content-c058fa0fb22dc40ef0225b21a97578cddd0aaffa.zip
unslug ru: move
Diffstat (limited to 'files/ru/glossary/idempotent')
-rw-r--r--files/ru/glossary/idempotent/index.html49
1 files changed, 49 insertions, 0 deletions
diff --git a/files/ru/glossary/idempotent/index.html b/files/ru/glossary/idempotent/index.html
new file mode 100644
index 0000000000..569dbc0168
--- /dev/null
+++ b/files/ru/glossary/idempotent/index.html
@@ -0,0 +1,49 @@
+---
+title: Идемпотентный метод
+slug: Словарь/Idempotent
+tags:
+ - Glossary
+ - HTTP
+translation_of: Glossary/Idempotent
+---
+<p>Метод HTTP является идемпотентным, если повторный идентичный запрос, сделанный один или несколько раз подряд, имеет один и тот же эффект, не изменяющий состояние сервера. Другими словами, идемпотентный метод не должен иметь никаких побочных эффектов (side-effects), кроме сбора статистики или подобных операций. Корректно реализованные методы {{HTTPMethod("GET")}}, {{HTTPMethod("HEAD")}}, {{HTTPMethod("PUT")}} и {{HTTPMethod("DELETE")}} <strong>идемпотентны</strong>, но не метод {{HTTPMethod("POST")}}. Также все {{glossary("safe", "безопасные")}} методы являются идемпотентными.</p>
+
+<p>Для идемпотентности нужно рассматривать только изменение фактического внутреннего состояния сервера, а возвращаемые запросами коды статуса могут отличаться: первый вызов {{HTTPMethod("DELETE")}} вернёт код {{HTTPStatus("200")}}, в то время как последующие вызовы вернут код {{HTTPStatus("404")}}. Из идемпотентности {{HTTPMethod("DELETE")}} неявно следует, что разработчики не должны использовать метод {{HTTPMethod("DELETE")}} при реализации RESTful API с функциональностью <em><strong>удалить последнюю запись</strong></em>.</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>Определение  <a href="https://tools.ietf.org/html/rfc7231#section-4.2.2">идемпотентности</a> в спецификации HTTP.</li>
+</ul>
+
+<h3 id="Технические">Технические</h3>
+
+<ul>
+ <li>Описание общих идемпотентных методов: {{HTTPMethod("GET")}}, {{HTTPMethod("HEAD")}}, {{HTTPMethod("PUT")}}, {{HTTPMethod("DELETE")}}, {{HTTPMethod("OPTIONS")}}</li>
+ <li>Описание общих неидемпотентных методов: {{HTTPMethod("POST")}}</li>
+</ul>