在開(kāi)發(fā)中绷落,當(dāng)前端要 POST 發(fā)送數(shù)據(jù)到后端時(shí),通常需要注意設(shè)置請(qǐng)求頭 header 中的 Content-Type 類型赶站。
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 類型是: application/json郑诺。
Content-Type 的幾種常見(jiàn)類型有:
- 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ō)明文件類型;Content-disposition官卡,用來(lái)說(shuō)明字段的一些信息蝗茁。每部分都是以 –boundary 開(kāi)始,緊接著是內(nèi)容描述信息寻咒,然后是回車哮翘,最后是字段具體內(nèi)容(字段、文本或二進(jìn)制等)仔涩。如果傳輸?shù)氖俏募炭溃€要包含文件名和文件類型信息。消息主體最后以 –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)制文件類型