1. 程式人生 > >HTTP傳遞資料的幾種方法

HTTP傳遞資料的幾種方法

Http請求的時候,需要傳遞引數給後端,一般都是key-value的形式,傳遞的方法有很多種

例如需要傳遞的資料是

dict(key1=value1,key2=value2)

1. URL引數

把引數放在URL中,適用於所有的HTTP請求Method,例如GET,POST

例如:

對應requests模組的params引數。例如result=requests.post(url,params=data)

Flask框架中,通過form或者values獲取請求資料,例如request.args.get('key1')

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')

3. x-www-form-urlencoded

跟form-data類似,也是把傳遞的資料放在請求體,不過請求體的形式相對簡單,跟URL引數的形式一樣。

即把傳遞資料轉換為URL引數的形式,然後放在請求體中,而不是請求的URL中。

同時需要加入請求頭:

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

整個請求內容

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')

4. JSON

請求體放JSON格式的傳遞資料 設定請求頭:

Content-Type: application/json

整個請求內容

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

本文為頭條號作者釋出,不代表今日頭條立場。