回覆列表
  • 1 # 使用者1837478923255

    POST和GET是不同的。

    GET有如下幾個特點:

    請求不應帶有請求體,伺服器應忽略/丟棄GET請求的請求體。GET介面不具有副作用。語義上,用於“讀取資源”。

    POST請求有如下特點:

    POST介面不需要具有冪等性,請求方不應假設該介面具有冪等性。語義上,用於改寫/新建資源。

    POST具有create/update的語義,因此常被用於實現類似於“遠端過程呼叫”的目的。這麼做並不違反語義,畢竟linux下這麼玩的多了去了。

    POST可以攜帶請求體,並且根據語義來說POST需要有請求體,沒有的話也是“建立空資源/將資源改寫為空”的語義。

    POST不應被假設為具有冪等性,因此伺服器端常用這種方式告訴請求方,POST請求不能隨意重發,除非響應中明確要求重發(比如3xx)。

    問“為什麼不用POST代替GET”是沒有意義的,就像“為什麼不用寫代替讀”一樣沒有意義。

    和POST類似的請求是PUT,這兩者語義上實際是重合的,惟一的區別是,

    PUT介面具有冪等性。

    這就對PUT作出了更嚴格的限制。

    顯然通常而言我們更喜歡冪等的介面,但是有些時候我們也需要做一些不那麼trivial的事情。所以非冪等介面也是有存在的必要的。

    不過冪等的POST介面也不一定非要改成PUT,具體是什麼,最終還是由語義決定的。

    這些並不是約定,這些就是HTTP協議的一部分,只有雙方都遵守協議才能愉快得玩耍。比如說,你自己實現TCP client也可以不遵守TCP協議對序列號和ACK的規定,畢竟你想怎麼寫就怎麼寫嘛,但是,我們管這叫,bug。

    同理,

    具有副作用的GET handler,是bug。

    GET請求發請求體的,是bug。

    伺服器不丟棄GET的請求體的,是bug。

  • 2 # 使用者3114586111456

    一、區別與應用: Form中的get和post方法,在資料傳輸過程中分別對應了HTTP協議中的GET和POST方法。

    二者主要區別如下: 1、Get是用來從伺服器上獲得資料,而Post是用來向伺服器上傳遞資料。2、Get將表單中資料的按照variable=value的形式,新增...

  • 中秋節和大豐收的關聯?
  • 臘肉雜糧飯怎麼做?