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請求 , 請求行攜帶參數
- get請求 , 請求體攜帶參數
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請求
2. multipart/form-data
3. application/json
4. 總結
其實application/___, 其實有很多形式的 , 比如XML , Yaml , Json等等 , 他們對于springmvc 中都需要一個 body去接收, 因為他們在傳遞的時候确實是在請求體中,
然後就是常見的application/x-www-form-urlencoded , 這個有點不同, 他不能使用請求體去接收, 因為他的傳遞的請求體,其實個get得很像 , 隻是放在了請求體裡 , 也是用&來連接 , 參數的格式為key=value&key=value , 是浏覽器默認的編碼格式 .
然後就是multipart/form-data , 這種一般是來做文件上傳的 ,他就有點特殊了 , 你可以看看他就請求體分割了, 然後通過特定個格式編碼獲取的.
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!