在開(kāi)發(fā)中,當(dāng)前端要 POST 發(fā)送數(shù)據(jù)到后端時(shí),通常需要注意設(shè)置請(qǐng)求頭 header 中的 Content-Type 類(lèi)型。
Content-Type 的作用是讓服務(wù)器端對(duì) post 請(qǐng)求中請(qǐng)求體 entity body 中的數(shù)據(jù)進(jìn)行解碼,獲取到對(duì)應(yīng)的數(shù)據(jù)格式。
HTTP 中的 post 請(qǐng)求使用最多的Content-Type 類(lèi)型是: application/json。
Content-Type 的幾種常見(jiàn)類(lèi)型有:
- application/x-www-form-urlencoded
- multipart/form-data
- application/json
- text/xml
- binary(application/octet-stream)
下面將分別對(duì)他們進(jìn)行講解:
application/x-www-form-urlencoded
最常見(jiàn)的 POST 提交數(shù)據(jù)的方式,原生Form表單,如果不設(shè)置 enctype 屬性,默認(rèn)為application/x-www-form-urlencoded 方式提交數(shù)據(jù)。
multipart/form-data
一個(gè)常見(jiàn)的 POST 數(shù)據(jù)提交的方式, Form 表單的 enctype 設(shè)置為multipart/form-data,它會(huì)將表單的數(shù)據(jù)處理為一條消息,以標(biāo)簽為單元,用分隔符(這就是boundary的作用)分開(kāi)。
它既可以上傳鍵值對(duì),也可以上傳文件,甚至多個(gè)文件。當(dāng)上傳的字段是文件時(shí),會(huì)有Content-Type來(lái)說(shuō)明文件類(lèi)型;Content-disposition,用來(lái)說(shuō)明字段的一些信息。每部分都是以 –boundary 開(kāi)始,緊接著是內(nèi)容描述信息,然后是回車(chē),最后是字段具體內(nèi)容(字段、文本或二進(jìn)制等)。如果傳輸?shù)氖俏募?,還要包含文件名和文件類(lèi)型信息。消息主體最后以 –boundary– 標(biāo)示結(jié)束。
application/json
用來(lái)告訴服務(wù)端消息主體是序列化后的 JSON 字符串,其中一個(gè)好處就是JSON 格式支持比鍵值對(duì)復(fù)雜得多的結(jié)構(gòu)化數(shù)據(jù)。
text/xml
提供統(tǒng)一的方法來(lái)描述和交換獨(dú)立于應(yīng)用程序或供應(yīng)商的結(jié)構(gòu)化數(shù)據(jù)
binary(application/octet-stream)
用來(lái)傳輸二進(jìn)制文件類(lèi)型