post請(qǐng)求中的參數(shù)形式

Http_GET_POST

post請(qǐng)求中的參數(shù)形式

Angular的ajax功能

AngularJs的ajax的post請(qǐng)求參數(shù)就是提交的json字符串。如:
    var data = {'name':'jack'};
    $http.post(url,data).success(function(rsp){
        //    code
     })

常見的post請(qǐng)求方式:

(1)、application/x-www-form-urlencoded
這應(yīng)該是最常見的 POST 提交數(shù)據(jù)的方式了。瀏覽器的原生 <form> 表單,如果不設(shè)置 enctype 屬性,那么最終就會(huì)以 application/x-www-form-urlencoded 方式提交數(shù)據(jù):

<form action="form_action.asp" enctype="text/plain">
  <p>First name: <input type="text" name="fname" /></p>
  <p>Last name: <input type="text" name="lname" /></p>
  <input type="submit" value="Submit" />
</form>

此時(shí)可以看到,

Content-Type: application/x-www-form-urlencoded;charset=utf-8
title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3

首先,Content-Type 被指定為 application/x-www-form-urlencoded;其次,提交的數(shù)據(jù)按照 key1=val1&key2=val2 的方式進(jìn)行編碼,key 和 val 都進(jìn)行了 URL 轉(zhuǎn)碼。大部分服務(wù)端語言都對(duì)這種方式很好的支持,常用的如jQuery中的ajax請(qǐng)求,Content-Type 默認(rèn)值都是application/x-www-form-urlencoded;charset=utf-8

(2)、multipart/form-data
這也是常見的post請(qǐng)求方式,一般用來上傳文件,各大服務(wù)器的支持也比較好。所以我們使用表單 上傳文件 時(shí),必須讓<form>表單的enctype屬性值為 multipart/form-data.

  • 注意:以上兩種方式:application/x-www-form-urlencoded和multipart/form-data都是瀏覽器原生支持的。

(3)、application/json
application/json作為響應(yīng)頭并不陌生,實(shí)際上,現(xiàn)在很多時(shí)候也把它作為請(qǐng)求頭,用來告訴服務(wù)端消息主體是序列化的JSON字符串,除了低版本的IE,基本都支持。除了低版本的IE都支持JSON.stringify()的方法,服務(wù)端也有處理JSON的函數(shù),使用json不會(huì)有任何麻煩。例如:

//請(qǐng)求數(shù)據(jù)
var data = {name:'jack',sex:'man'};
//請(qǐng)求數(shù)據(jù)序列化處理
JSON.stingify(data);

//結(jié)果:{'name':'jack','sex':'man'};

(4)、text/xml

postman中post請(qǐng)求的form-data、x-www-form-urlencoded、raw、binary的區(qū)別

1、form-data:
等價(jià)于http請(qǐng)求中的multipart/form-data,它會(huì)將表單的數(shù)據(jù)處理為一條消息,以標(biāo)簽為單元,用分隔符分開。既可以上傳鍵值對(duì),也可以上傳文件。當(dāng)上傳的字段是文件時(shí),會(huì)有Content-Type來表名文件類型;content-disposition,用來說明字段的一些信息;
由于有boundary隔離,所以multipart/form-data既可以上傳文件,也可以上傳鍵值對(duì),它采用了鍵值對(duì)的方式,所以可以上傳多個(gè)文件。

2、x-www-form-urlencoded:
等價(jià)于application/x-www-from-urlencoded,會(huì)將表單內(nèi)的數(shù)據(jù)轉(zhuǎn)換為鍵值對(duì),比如,name=java&age = 23.

3、raw
可以上傳任意格式的文本,可以上傳text、json、xml、html等

4、binary
相當(dāng)于Content-Type:application/octet-stream,從字面意思得知,只可以上傳二進(jìn)制數(shù)據(jù),通常用來上傳文件,由于沒有鍵值,所以,一次只能上傳一個(gè)文件。

multipart/form-data與x-www-form-urlencoded區(qū)別
multipart/form-data:既可以上傳文件等二進(jìn)制數(shù)據(jù),也可以上傳表單鍵值對(duì),只是最后會(huì)轉(zhuǎn)化為一條信息;
x-www-form-urlencoded:只能上傳鍵值對(duì),并且鍵值對(duì)都是間隔分開的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容