1、安装
安装命令:pip install requests
豆瓣源安装: pip install requests -i https://pypi.douban.com/simple/
2、requests常见参数
url参数:传入的是字符串,请求地址
data参数:传入的是字典,自动编码为表单,常用于表单格式 (Concent-Type:application/x-www-form-urlencoded;charset=utf-8)
json参数:传入的是字典,自动编码为json字符串(Concent-Type:application/json;charset=utf-8)
params参数:传入的是字典,自动编码为表单
headers参数:传递的是字典格式,传递请求头
file参数:传递的是字典格式,一般使用在文件上传
cookies参数:传递的是字典格式,传递cookie
3.response响应
res.text:获取响应文本信息,返回字符串
res.json:获取json数据信息,返回字典
res.headers:获取响应头
res.staus_code:获取响应状态码
res.cookies:获取cookie信息
res.request.headers:获取请求头
res.request.body:获取请求体
4.实例
proxies里面的地址为fiddler的抓包地址,可以用来进行接口的请求调试
5.POST 方法的content-type类型
content-type是http请求的响应头和请求头的字段。当作为响应头时,告诉客户端实际返回的内容的内容类型。作为请求头时(post或者put),客户端告诉服务器实际发送的数据类型。
在前端开发过程中,通常需要跟后端工程师对接接口的数据格式,不同的数据类型对于服务器来说有不同的处理方式,因此我们需要关注不同的conten-type类型.
1. application/x-www-form-urlencoded
浏览器原生form表单默认的提交方式(在不设置enctype的情况下)。此时请求头的格式如下:
content-type: application/x-www-form-urlencoded;charset=utf-8
form-data: key1=val1&key2=val2
此时后端例如php可以通过$_POST["key1"]的方法来获取参数值。
此种情况下:非字母或数字的字符会被进行编码(编码方式https://developer.mozilla.org/zh-CN/docs/Glossary/percent-encoding),这也是为什么这种方式不支持二进制数据的原因。
2. multipart/form-data
与application/x-www-form-urlencoded 的区别是她支持文件的传输,并且它的传输数据放在request-payload里,并且以bounday进行分隔。
POST /test.html HTTP/1.1
Host: example.org
Content-Type: multipart/form-data;boundary="boundary"
--boundary
Content-Disposition: form-data; name="field1"
value1
--boundary
Content-Disposition: form-data; name="field2"; filename="example.txt"
value2
3. application/json
格式是这样的:
POST http://www.example.com HTTP/1.1
Content-Type: application/json;charset=utf-8
{"title":"test","sub":[1,2,3]}
它用来告诉服务端消息主体是序列化后的 JSON 字符串,其中一个好处就是JSON 格式支持比键值对复杂得多的结构化数据。此时php不能直接通过$_POST获取,需要先从php://input
里获得原始输入流,再json_decode
成对象
4.text/plain
传统的ajax请求提交
function submit2() {
var xhr = new XMLHttpRequest();
xhr.timeout = 3000;
var obj = {a: 1, b: 2};
xhr.open('POST', '/');
xhr.send(obj);
}
另外,对于axios请求,不同的请求方式content-type也不同
function submit3() {
var sence1 = 'name=123&val=456';
var sence2 = {name: 123, val: 456};
axios.post('/', sence1)
}
- 当传递的是字符串的时候
2. 当传递的是对象的时候
总结
1.传统的ajax请求时候,Content-Type
默认为"文本"类型。
2.传统的form提交的时候,Content-Type
默认为"Form"类型。
3.axios传递字符串的时候,Content-Type
默认为"Form"类型。
4.axios传递对象的时候,Content-Type
默认为"JSON"类型
标签:请求,form,Python,request,用法,Content,application,json,Type From: https://blog.51cto.com/u_15996576/6106406