HTTP傳遞數據的幾種方法

Http請求的時候,須要傳遞參數給後端,通常都是key-value的形式,傳遞的方法有不少種
例如須要傳遞的數據是
dict(key1=value1,key2=value2)python

1. URL參數

把參數放在URL中,適用於全部的HTTP請求Method,例如GET,POST
例如:
http://www.baidu.com?key1=value1&key2=value2;web

對應requests模塊的params參數。例如result=requests.post(url,params=data)
Flask框架中,經過form或者values獲取請求數據,例如request.args.get('key1')json

2. Form-data

也就是經過HTML的FORM標籤,傳遞數據給後端的方法
整個HTTP請求內容是這樣的:後端

POST /test?url_key=value1 HTTP/1.1
Host: 192.168.137.130
Cache-Control: no-cache

----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="key1"

value1
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="key2"

value2
----WebKitFormBoundaryE19zNvXGzXaLvS5C

把參數放在請求體中,使用--webkit這些協議包裹。因爲須要用到請求體,因此不支持GET Method。
Flask框架中,經過form或者values獲取請求數據,例如request.form.get('key1')app

3. x-www-form-urlencoded

跟form-data相似,也是把傳遞的數據放在請求體,不過請求體的形式相對簡單,跟URL參數的形式同樣。
即把傳遞數據轉換爲URL參數的形式,而後放在請求體中,而不是請求的URL中。
同時須要加入請求頭:框架

Content-Type: application/x-www-form-urlencoded

整個請求內容post

POST /test?url_key=value1 HTTP/1.1
Host: 192.168.137.130
Cache-Control: no-cache
Content-Type: application/x-www-form-urlencoded

key1=value1&key2=value2

對應requests的data參數。例如result=requests.post(url,data=data)
Flask框架中,經過form或者values獲取請求數據,例如request.form.get('key1')url

4. JSON

請求體放JSON格式的傳遞數據
設置請求頭:code

Content-Type: application/json

整個請求內容orm

POST /test?url_key=value1 HTTP/1.1
Host: 192.168.137.130
Content-Type: application/json
Cache-Control: no-cache

{"key2": "value2", "key1": "value1"}

對應requests模塊的json參數。例如result=requests.post(url,json=data)
Flask框架中,經過json獲取請求數據,例如request.json.get('key1')

其餘

  1. 經過Google的拓展程序POSTMAN,能夠模擬發送HTTP請求
  2. requests查看請求頭和請求體:
url='http://192.168.137.130/test'
data=dict(key1='value1',key2='value2')
result=requests.post(url,json=data)
print result.request.headers
print result.request.body

博文爲做者原創,未經容許,禁止轉載。

相關文章
相關標籤/搜索