對于post和get在我以前的認知下一直認為是:
前端發送給后端就稱為post
前端需要從后端返回就用get
但是在開發過程中發現了不僅僅如此
區別
GET
意圖:獲取(GET) 信息。你只是想讀取服務器上已經存在的資源,你不打算改變服務器上的任何東西。
數據的位置:你把這個書號寫在一張公開的便簽(URL查詢字符串)上遞給管理員。比如 …/load_session?session=12345。大家都能看到這張便簽
那么這個數據怎么定義的呢
數據定義:GET http://127.0.0.1:5001/api/load_session?session=a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6
協議: https://
域名: www.google.com
路徑: /search
查詢字符串 (Query String): ?q=flask&tbm=isch
查詢字符串就是跟在問號 ? 后面的那部分。它的特點是:
- 以 ? 開始。
- 由一個或多個鍵值對組成。
- 每個鍵值對的格式是 key=value。
- 多個鍵值對之間用 & 符號隔開。
特點
安全:重復問多少次同一本書,書本身不會有任何變化。
冪等(Idempotent):重復請求的結果總是一樣的。
可緩存:因為結果不變,瀏覽器可以把結果緩存起來,下次再要同一本書時,可以直接從緩存里拿,速度更快。
代碼中獲取方式
request.args.get('session')
就會返回字符串 ‘a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6’。
post
提交(POST) 數據,通常是為了在服務器上創建(Create)一個新的資源,或者更新(Update)一個已有的資源。這個操作會改變服務器的狀態。
你提供的數據:你要郵寄的包裹本身,里面包含了豐富的、可能很私密的內容,比如用戶名、密碼、聊天消息等。
數據的位置:你把包裹(數據)放在一個不透明的信封或箱子(HTTP請求的Body)里交給郵局。外面的人看不到里面的具體內容。
結果:郵局處理了你的包裹,可能會給你一個回執(比如“注冊成功”)。
對于比較隱私的數據,是不能再url中傳遞的,所以就需要用post方式
代碼中獲取方式
data = request.json
總結
如果前端發送數據是為了指定它想要什么,用 GET。
如果前端發送數據是為了讓后端保存什么或處理什么,用 POST。