18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

冪等和非冪等請求的一些定義和分析

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-10-17 10:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

最近在做項目的過程中,有一個需求是在客戶端 HTTP 請求失敗后,增加一個重試機制,然后我就翻了一些有關“重試”的庫,找到一個 axios-retry,在了解的過程中,我就發(fā)現(xiàn)了里面有一個默認的配置選項:

“By default, it retries if it is a network error or a 5xx error on an idempotent request (GET, HEAD, OPTIONS, PUT or DELETE).

什么意思呢?默認情況下,只有當出現(xiàn)網(wǎng)絡問題,是“冪等請求”的 5xx 狀態(tài)碼的情況下,才會發(fā)起重試,而這里面并不包含 POST 請求。

我就好奇了,這里面的這個 idempotent request,也就是“冪等請求”究竟是什么意思呢?

帶著好奇我就搜索了下,學到了新的知識,這里就跟大家分享下。

冪等請求

冪等請求,英文叫做 Idempotent Request,官方的文檔是這個:https://developer.mozilla.org/en-US/docs/Glossary/Idempotent

官方定義如下:

“An HTTP method is idempotent if the intended effect on the server of making a single request is the same as the effect of making several identical requests.

意思就是,如果發(fā)出單個請求對服務器的預期效果與發(fā)出多個相同請求的效果相同,則HTTP 方法是冪等的。

其實說白了意思就是這個請求發(fā)起一次和發(fā)起多次,都對服務器結果沒什么區(qū)別,一次請求后,服務器結果由 A 變成了 B,后面再發(fā)多次這樣的請求,結果還是 B 不變,那這個請求就是冪等的。

冪等請求分類

我們知道,HTTP 請求一共有 GET、POST、PATCH、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT這些,那哪些是冪等,哪些是不冪等的呢。

安全請求

這里面我們先分析下,其中有的請求就是一些壓根不會對服務器產(chǎn)生任何影響的請求,比如說 GET 就是從服務器上讀取信息并返回,服務器的數(shù)據(jù)根本不會被修改,這種請求就是“安全”的請求。

安全請求有哪些呢?GET、HEAD、OPTIONS、TRACE。

具體對如上三種請求的解釋見官方文檔:

  • GET:https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET
  • HEAD:https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/HEAD
  • OPTIONS:https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/OPTIONS
  • TRACE:https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/TRACE

所以,GET、HEAD、OPTIONS、TRACE 這些請求都是冪等請求。

POST

接下來我們來分析下 POST 請求,這個是冪等的嗎?

不是。

因為 POST 請求一般會用作創(chuàng)建一個字段,比如:

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

每 POST 一次,一個字段就會被創(chuàng)建,所以請求一次的結果和請求多次的結果是不一樣的。

所以,POST 不是冪等請求。

PUT

那 PUT 是不是呢?

是。

因為 PUT 請求一般會用作修改一個資源,而且是全部覆蓋修改。

所以,發(fā)起一次 PUT 請求,服務器資源就被修改為 PUT 請求的內(nèi)容了,如果再繼續(xù)發(fā)起多次,那最終結果還是不變。

所以 PUT 請求是冪等請求。

DELETE

同理,DELETE 是不是呢?

是。

因為 DELETE 請求是用作刪除服務器資源的,發(fā)起一次 DELETE 請求,資源就被刪除了,在發(fā)起多次,結果也是一樣的,因為資源已經(jīng)被刪除了。

所以 DELETE 請求是冪等請求。

PATCH

既然 PUT 是冪等請求,那么 PATCH 是不是呢?

不是。

PATCH 這個請求可能大家見的不多啊,這個請求其實和 PUT 類似,也是用來修改資源的,但 PUT 偏向于把整個資源進行修改,而 PATCH 是修改資源的某一部分。

具體 PATCH 的介紹大家可以見:https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PATCH

原文有一個對 PATCH 是是否冪等的解釋:

“A PATCH is not necessarily idempotent, although it can be. Contrast this with PUT; which is always idempotent. The word "idempotent" means that any number of repeated, identical requests will leave the resource in the same state. For example if an auto-incrementing counter field is an integral part of the resource, then a PUT will naturally overwrite it (since it overwrites everything), but not necessarily so for PATCH.

所以,在某些情況下,PATCH 不一定是冪等的,比如服務器的某些資源的某個字段是一個自增技術,那么每 PATCH 一次,這個就會改變一次,而 PUT 往往都是全部覆蓋。

所以,在這里,PATCH 不被認為是冪等請求。

CONNECT

這個 CONNECT 大家可能也用的不多啊,CONNECT 請求會被用作啟動與所請求資源的雙向通信,它可以用來打開隧道。

具體大家可以參見:https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/CONNECT

所以,這個本身就是一種用來啟動雙向通信的請求,是一種逐跳請求,請求一次和多次所建立的一些連接次數(shù)也是不一樣的,所以不是冪等請求。

總結

好了,這里就總結了冪等和非冪等請求的一些定義和分析。

冪等請求有:GET, HEAD, PUT, DELETE, OPTIONS, TRACE

非冪等請求有:POST, PATCH, CONNECT

看完這篇文章,以后大家再問起冪等請求相關的問題,肯定就不會懵了吧!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)

    關注

    8

    文章

    7298

    瀏覽量

    93602
  • 服務器
    +關注

    關注

    13

    文章

    10013

    瀏覽量

    90391
  • HTTP
    +關注

    關注

    0

    文章

    530

    瀏覽量

    34591
  • 客戶端
    +關注

    關注

    1

    文章

    304

    瀏覽量

    17354
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    穩(wěn)態(tài)熱暈暈效應的數(shù)值分析

    【作者】:孫運強;許曉軍;習鋒杰;陸啟生;吳武明;郭少鋒;【來源】:《強激光與粒子束》2010年02期【摘要】:運用高斯光束展開的方法,分析圓對稱平頂光束在大氣傳輸中的熱暈及其暈效應。通過對熱暈
    發(fā)表于 04-22 11:37

    離線計算中的和DataWorks中的相關事項

    多次的結果和執(zhí)行次是完全樣的。嚴格的定義這里不展開討論,有興趣的可以到網(wǎng)上搜下,會有很多介紹。通俗一些說,
    發(fā)表于 02-27 13:24

    請問DSP28335函數(shù)pow()運算的速度如何?

    大家好! 本人是DSP28335的菜鳥,最近在做計算時需要用到pow()運算,大約能用到4到5次運算,pow()是double雙精度運算,不知道這個函數(shù)的速度如何,很多資料說雙精度運算很慢,不知
    發(fā)表于 09-05 11:08

    OPPO R9S楊版哄搶空 后續(xù)還有紅色“驚喜版”

    本月20日,OPPO R9s楊定制版“小Phone”正式推出,23日上午10:00,OPPO R9s楊定制版——小phone在OPPO官網(wǎng)正式開售,開售后32秒就被拍完,47分
    發(fā)表于 12-26 17:29 ?5165次閱讀

    個安全可驗證的方陣云計算外包協(xié)議

    為解決計算能力有限的對象(用戶)所面臨的大維數(shù)方陣的高次計算問題,利用云計算平臺(云端),提出個安全可驗證的方陣云計算外包協(xié)議。協(xié)議中,用戶首先構造個隨機置換,再結合克羅內(nèi)克函
    發(fā)表于 01-17 13:50 ?0次下載
    <b class='flag-5'>一</b>個安全可驗證的方陣<b class='flag-5'>冪</b>云計算外包協(xié)議

    在高并發(fā)下怎么保證接口的性?

    前言 接口性問題,對于開發(fā)人員來說,是個跟語言無關的公共問題。本文分享了一些解決這類問題非常實用的辦法,絕大部分內(nèi)容我在項目中實踐過的,給有需要的小伙伴
    的頭像 發(fā)表于 05-14 10:23 ?2184次閱讀
    在高并發(fā)下怎么保證接口的<b class='flag-5'>冪</b><b class='flag-5'>等</b>性?

    get與post的請求一些區(qū)別

    今天再次看到這個問題,我也有了一些新的理解和感觸,臨時回顧了下 get 與 post 的請求一些區(qū)別。
    的頭像 發(fā)表于 09-07 10:00 ?1835次閱讀

    分析解決(性)的方法

    這個概念,是個數(shù)學上的概念,即:f……(f(f(x))) = f(x)。用在計算機領域,指的是系統(tǒng)里的接口或方法對外的種承諾,使用相同參數(shù)對同
    的頭像 發(fā)表于 10-14 10:08 ?1500次閱讀

    Spring Boot實現(xiàn)接口性的4種方案

    個數(shù)學與計算機學概念,在數(shù)學中某元運算為時,其作用在任
    的頭像 發(fā)表于 11-08 10:21 ?1351次閱讀

    什么是性?的實現(xiàn)原理

    在編程中操作的特點是其任意多次執(zhí)行所產(chǎn)生的影響均與次執(zhí)行的影響相同。函數(shù),或
    發(fā)表于 01-05 10:40 ?7230次閱讀

    個注解,優(yōu)雅的實現(xiàn)接口性!

    除了查詢和刪除之外,還有更新操作,同樣的更新操作在大多數(shù)場景下也是天然的,其例外是也會存在ABA的問題,更重要的是,比如執(zhí)行update table set a = a + 1 where v = 1這樣的更新就
    的頭像 發(fā)表于 08-26 14:36 ?1366次閱讀
    <b class='flag-5'>一</b>個注解,優(yōu)雅的實現(xiàn)接口<b class='flag-5'>冪</b><b class='flag-5'>等</b>性!

    基于接口性解決方案

    接口性是指無論調(diào)用接口的次數(shù)是次還是多次,對于同資源的操作都只會產(chǎn)生次結果。換句話說,多次重復調(diào)用相同的接口
    的頭像 發(fā)表于 09-30 16:27 ?756次閱讀
    基于接口<b class='flag-5'>冪</b><b class='flag-5'>等</b>性解決方案

    為什么要實現(xiàn)性校驗 如何實現(xiàn)接口的性校驗

    前端重復提交表單:在填寫一些表格時候,用戶填寫完成提交,很多時候會因網(wǎng)絡波動沒有及時對用戶做出提交成功響應,致使用戶認為沒有成功提交,然后直點提交按鈕,這時就會發(fā)生重復提交表單請求。
    的頭像 發(fā)表于 02-20 14:14 ?1871次閱讀

    探索LabVIEW編程接口性原理與實踐

    性原來是數(shù)學上的概念,在編程領域可以理解為:多次請求個資源或執(zhí)行某個操作時應該具有唯
    的頭像 發(fā)表于 02-29 10:24 ?1225次閱讀
    探索LabVIEW編程接口<b class='flag-5'>冪</b><b class='flag-5'>等</b>性原理與實踐

    如何秒級實現(xiàn)接口間“”補償:款輕量級仿數(shù)據(jù)校正處理輔助工具

    導語 本文分析了在網(wǎng)絡超時場景下,RPC服務調(diào)用數(shù)據(jù)致性的問題,對于接口無、接口失效情
    的頭像 發(fā)表于 09-15 16:55 ?487次閱讀
    如何秒級實現(xiàn)接口間“<b class='flag-5'>冪</b><b class='flag-5'>等</b>”補償:<b class='flag-5'>一</b>款輕量級仿<b class='flag-5'>冪</b><b class='flag-5'>等</b>數(shù)據(jù)校正處理輔助工具