您的位置:首页 > 理论基础 > 计算机网络

HTTP传递数据的几种方法

2016-12-19 18:17 351 查看
Http请求的时候,需要传递参数给后端,一般都是key-value的形式,传递的方法有很多种

例如需要传递的数据是

dict(key1=value1,key2=value2)

1. URL参数

把参数放在URL中,适用于所有的HTTP请求Method,例如GET,POST

例如:

http://www.baidu.com?key1=value1&key2=value2;

对应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

博文为作者原创,未经允许,禁止转载。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: