內部因素:編碼方式,報文
外部因素:緩存[瀏覽器],長度限制[瀏覽器],請求次數[瀏覽器],冪等性/副作用[接口] 安全性
參數編碼
get:僅支持url編碼,參數需要編碼和解碼
post:多種編碼方式
報文
get:參數放在url
post:參數放在請求體
緩存
get請求會被瀏覽器緩存
post不會
長度限制
瀏覽器允許get請求url長度為8k,過長會影響效率
post沒有限制
請求次數
get請求一次
post:有的瀏覽器post的head和body會分開請求,head到達server后,會響應100,然后繼續發送body,返回200。所以也會有效率問題,不過網絡好的情況下影響不大。
冪等性/副作用
冪等性可查看下方參考鏈接
get:冪等性,根據語義,get請求只在服務端獲取數據,所以每次獲取的結果都是一樣的。
post:非冪等性,會在服務端更改狀態,比如調用了刪除接口,下次在調用可能就是返回不存在當前商品了。所以post存在副作用。不過這些都是根據接口有關的認為因素,跟http本身沒有關系。
安全性
至於安全性,兩個http請求本身都是不安全的,因為http傳遞數據都是明文發送的,所以加上ssl才能更安全。
但是從表面上看,get請求把參數放在url上是不安全的,所以一定不要在get請求中把敏感信息放在url上。
從副作用的角度上講,get請求對數據是安全的,因為它只獲取數據,不會更改狀態。