紫影基地

 找回密码
 立即注册
查看: 435|回复: 0

HTTP传递数据的几种方法

[复制链接]
阅读字号:

2564

主题

2721

帖子

5万

积分

超级版主

Rank: 8Rank: 8

积分
59885
发表于 2021-10-16 07:45:05 | 显示全部楼层 |阅读模式
本帖最后由 moonstar 于 2021-10-16 07:47 编辑

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请求内容是这样的:

plain

  1.     POST /test?url_key=value1 HTTP/1.1
  2.     Host: 192.168.137.130
  3.     Cache-Control: no-cache
  4.      
  5.     ----WebKitFormBoundaryE19zNvXGzXaLvS5C
  6.     Content-Disposition: form-data; name="key1"
  7.      
  8.     value1
  9.     ----WebKitFormBoundaryE19zNvXGzXaLvS5C
  10.     Content-Disposition: form-data; name="key2"
  11.      
  12.     value2
  13.     ----WebKitFormBoundaryE19zNvXGzXaLvS5C
复制代码



把参数放在请求体中,使用--webkit这些协议包裹。由于需要用到请求体,所以不支持GET Method。

Flask框架中,通过form或者values获取请求数据,例如request.form.get('key1')

3. x-www-form-urlencoded

跟form-data类似,也是把传递的数据放在请求体,不过请求体的形式相对简单,跟URL参数的形式一样。

即把传递数据转换为URL参数的形式,然后放在请求体中,而不是请求的URL中。

同时需要加入请求头:

plain

  1.     Content-Type: application/x-www-form-urlencoded
复制代码



整个请求内容

plain

  1.     POST /test?url_key=value1 HTTP/1.1
  2.     Host: 192.168.137.130
  3.     Cache-Control: no-cache
  4.     Content-Type: application/x-www-form-urlencoded
  5.      
  6.     key1=value1&key2=value2
复制代码



对应requests的data参数。例如result=requests.post(url,data=data)

Flask框架中,通过form或者values获取请求数据,例如request.form.get('key1')

4. JSON

请求体放JSON格式的传递数据 设置请求头:

plain

  1.     Content-Type: application/json
复制代码



整个请求内容

plain

  1.     POST /test?url_key=value1 HTTP/1.1
  2.     Host: 192.168.137.130
  3.     Content-Type: application/json
  4.     Cache-Control: no-cache
  5.      
  6.     {"key2": "value2", "key1": "value1"}
复制代码



对应requests模块的json参数。例如result=requests.post(url,json=data)

Flask框架中,通过json获取请求数据,例如request.json.get('key1')

其他

通过Google的拓展程序POSTMAN,可以模拟发送HTTP请求

requests查看请求头和请求体:

plain

  1.     url='http://192.168.137.130/test'
  2.     data=dict(key1='value1',key2='value2')
  3.     result=requests.post(url,json=data)
  4.     print result.request.headers
复制代码



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|紫影基地

GMT+8, 2025-1-27 10:24 , Processed in 0.093266 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表