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')
其他
- 通過Google的拓展程式POSTMAN,可以模擬傳送HTTP請求
- 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
本文為頭條號作者釋出,不代表今日頭條立場。