在理解這兩者的區別前需要先了解的概念:
冪等性在程式設計中乙個冪等操作的特點是其任意多次執行所產生的影響均與一次執行的影響相同。這是在網上找到的post請求與get請求的差別對比圖:簡單的說就是,瀏覽器發起一次請求和多次請求,不會改變目標資源的狀態,也可以說是:瀏覽器進行了快取。
但個人認為post和get差別最核心的一點是:
快取機制的不同(能否被瀏覽器快取)這裡我們用到了開頭所講的冪等性概念。由於網路的不可靠,使得等冪性顯得特別重要,因此get、head、put、delete一定要設計成等冪的:如果一次請求,伺服器收到處理以後,客戶端沒有收到相應,客戶端會再次請求,如果沒有等冪性保障,就會發生意想不到的問題。
post是不等冪的,例如在segmentfault上兩次提交相同的文章,則會產生兩個資源。
通常http 快取只適用於 idempotent request(冪等的請求),對於其他型別的響應則無能為力。
get請求的快取過程
第一次請求時,返回資料。
返回資料,在http頭部中包含last-modified(最後修改的時間) etag(指示資源的狀態的唯一標識)expires(指示資源在瀏覽器快取中的過期時間)
然後瀏覽器會將請求回的檔案放在cache目錄下,並儲存上述資訊
發起第二次請求。
瀏覽器會先檢查cache目錄中是否有該檔案,並且是否過期。同時滿足這兩個條件,則瀏覽器不會在向伺服器傳送請求,而是直接使用快取中的檔案。
否則,瀏覽器會傳送請求伺服器 ,並在頭部新增if-modified-since 和 if-none-match。
如果檔案從上次訪問至今都沒有被修改過或etag資訊沒有變化,則直接返回乙個304的狀態,表明伺服器端允許請求訪問資源,但不滿足條件,返回不包含任何響應的主體部分。
解決辦法:
Get請求 Post請求
複製直接用 post同步請求 void synchronourequestbypost post非同步請求 1.方法 void asynchronourequestbypost void connection nsurlconnection connection didreceiveresponse...
get請求 post請求
今天由於群裡的人說出了這個問題,在這裡總結一下,順便加強記憶。get和post是http請求的兩種基本方法,要說它們的區別 直觀的區別就是get把引數包含在url中,post通過request body傳遞引數 本標準答案參考自w3schools 這只是乙個表面的並不是深層的更深一步理解 get和p...
POST 請求 GET請求
get 引數 username 和 password 1.get的請求都拼接在url中 2.後面是跟的引數 前面跟的都是介面 3.引數的形式key value key2 value2 對於get請求 所有得引數都拼接在url中,這樣暴露在外面 會造成資料的不安全 url的長度是有限制的 如果引數過於...