tft每日頭條

 > 生活

 > http是怎麼構成的

http是怎麼構成的

生活 更新时间:2024-07-19 06:15:55
HTTP 一些概念和操作簡單學習(誤區)

HTTP是五層協議中最頂層 ,屬于應用層協議 ,基于TCP編寫的

​ 我下面測試的工具是Spring-MVC insomnia 進行測試的

1. HTTP無狀态協議

​ HTTP無狀态協議,是指協議對于事務處理沒有記憶能力。缺少狀态意味着如果後續處理需要前面的信息,則它必須重傳,這樣可能導緻每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。

​ Cookie是通過客戶端保持狀态的解決方案。從定義上來說,Cookie就是由服務器發給客戶端的特殊信息,而這些信息以文本文件的方式存放在客戶端,然後客戶端每次向服務器發送請求的時候都會帶上這些特殊的信息。服務器在向客戶端回傳相應的超文本的同時也會發回這些個人信息,存放于HTTP響應頭(Response Header),當客戶端浏覽器接收到來自服務器的響應之後,浏覽器會将這些信息存放在一個統一的位置;自此,客戶端再向服務器發送請求的時候,都會把相應的Cookie再次發回至服務器。而這次,Cookie信息則存放在HTTP請求頭(Request Header)了

2. Get 和 Post 區别1. 看看規範

規範規定 : get 請求是将參數以key=value 的形式拼接在url的?後面 , post請求是将參數放在請求體裡 , 難道隻能認識這些 , 難道get不能放入請求體 ? post不能url傳參?

2. 帶着疑惑

@PostMapping("/post") public String post(@RequestParam("name") String name) { System.out.println(name); return "post 請求"; } @GetMapping("/get") public String get(@RequestBody Map<String, String> map) { Set<String> strings = map.keySet(); strings.forEach(s -> { System.out.println(s " : " map.get(s)); }); return "get請求"; }

這是兩個方法 ,一個get 請求 , 一個 post , 我們使用一下 , 輸出結果

  • post請求 , 請求行攜帶參數

http是怎麼構成的(你真的了解http嗎)1

  • get請求 , 請求體攜帶參數

http是怎麼構成的(你真的了解http嗎)2

3. 總結

說明7種請求方式 ,隻是規範的規定 , 其實每一種都可以做很多事情 , 所以我們不要因為所謂的規範而不敢去嘗試 ,

2. PUT和POST的區别

官方的定義是PUT他是一個幂等性操作,而post不是,

幂等性 的意思是 不管1次或者N次變化結果是相同的 .

而PUT和POST區别就在這裡 ,比如我們去更新或者添加一個東西 , 連續發送多次 , 比如說我要 update/article , 連續發送了兩次 ,put隻是覆蓋第一次的結果 , 而post代表每次都會産生新的結果 ,所以對于這個文章更新 , post結果是産生了兩篇文章 ,而 put是一篇 .

3. 表單傳值格式1. application/x-www-form-urlencoded2. multipart/form-data3. application/Json

這三者的區别是什麼 ?

1. application/x-www-form-urlencoded 使用

​ 必須是Post請求

http是怎麼構成的(你真的了解http嗎)3

2. multipart/form-data

http是怎麼構成的(你真的了解http嗎)4

3. application/json

http是怎麼構成的(你真的了解http嗎)5

4. 總結

其實application/___, 其實有很多形式的 , 比如XML , Yaml , Json等等 , 他們對于springmvc 中都需要一個 body去接收, 因為他們在傳遞的時候确實是在請求體中,

然後就是常見的application/x-www-form-urlencoded , 這個有點不同, 他不能使用請求體去接收, 因為他的傳遞的請求體,其實個get得很像 , 隻是放在了請求體裡 , 也是用&來連接 , 參數的格式為key=value&key=value , 是浏覽器默認的編碼格式 .

然後就是multipart/form-data , 這種一般是來做文件上傳的 ,他就有點特殊了 , 你可以看看他就請求體分割了, 然後通過特定個格式編碼獲取的.

http是怎麼構成的(你真的了解http嗎)6

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved