1. 程式人生 > 其它 >Http中的Content-Type的理解和使用

Http中的Content-Type的理解和使用

一、Http協議

Http協議有請求方和回覆方。
請求方:請求頭、請求行、請求體
回覆方:回覆頭、回覆行、回覆體。

在請求頭、回覆頭中描述了使用的http協議、請求方式、請求url等資訊

在請求行中描述了,一些元資料,這些元資料是用來描述本次http請求,其中就有Content-Type該屬性。
在請求體則是會放置請求的資料到伺服器中。

二、Content-type

http需要傳遞的資訊都會放在請求體(除GET),傳遞到伺服器,則伺服器會解析對應的請求體,但是伺服器需要判斷該請求體是什麼格式,則會根據什麼方式進行解析請求體,因此就出現了Content-type,該屬性用於表示請求體的資料是什麼格式,同時也表示回覆體的資料是什麼格式,這樣伺服器以及瀏覽器才會怎麼應該怎麼樣去解析請求體或者回復體的內容了。

常見的Content-type:

  • MulitPart/form-data 檔案上傳格式
  • application/json json格式
  • application/x-www-form-data-urlencoded 標準key-value格式
  • application/pdf pdf格式
  • application/msword word格式
  • application/octet-stream : 二進位制流資料(如常見的檔案下載)

三、application/json

在現在web專案大多數都 是使用application/json進行傳送資料和接收資料,axios預設就是使用application/json,springmvc則可以使用@RequestBody進行接收資料和解析資料。
如果在請求行中使用application/json,則請求體的資料,則會被解析成一個json字串傳送到後端伺服器中。

當然在前端進行處理物件的時候,應該使用JSON.stringify(物件)進行json序列化

四、application/x-www-form-data-urlencoded

在form表單進行提交時,如果沒有重寫提交方法,則會使用該種類型,該型別是會將資料編寫成一個key:value的形式。

如果是get請求方式的話,則會將key=value的形式拼接在url後面。

五、MulitPart/form-data

該content-type常常用於檔案上傳的表單請求,也就是在表單中有檔案內容,因此需要使用mulitpart/form-data的形式。

在宣告Content-Type: multipart/form-data; boundary=something時,需要編寫其boundary,該boundary也是作為一個分割符進行作用。
一個form表單中可能有input輸入框,也有file上傳,內容會全部編寫在請求體傳送到後端伺服器。

六、注意點

在宣告content-type的時候需要注意宣告其charset,如下所示:
Content-Type: text/html; charset=utf-8