python requests最全 *** 作手册,请求头和请求方法详解,有了这一篇面试就够了

python requests最全 *** 作手册,请求头和请求方法详解,有了这一篇面试就够了,第1张

概述requests函数不是python系统自带的,需要我们通过pip安装。requests函数包括了我们常用的http请求的所有功能,他比urllib系列简单且使用,而且适用于爬虫和接口自动化下面我们进入主题一、安装pipinstallrequests二、基本概念1、post方法:通过POST发送到服务器的数据存储在H

requests函数不是python系统自带的,需要我们通过pip安装。

requests函数包括了我们常用的http请求的所有功能,他比urllib系列简单且使用,而且适用于爬虫和接口自动化

下面我们进入主题

一、安装
 pip install requests
二、基本概念1、post方法:

通过 POST 发送到服务器的数据存储在 http 请求的请求主体中:

POST /test/demo_form.PHP http/1.1Host: w3school.com.cnname1=value1&name2=value2

有关 POST 请求的其他一些注释:

POST 请求不会被缓存

POST 请求不会保留在浏览器历史记录中

POST 不能被收藏为书签

POST 请求对数据长度没有要求

2、get方法

查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:

/test/demo_form.PHP?name1=value1&name2=value2

有关 GET 请求的其他一些注释:

GET 请求可被缓存GET 请求保留在浏览器历史记录中GET 请求可被收藏为书签GET 请求不应在处理敏感数据时使用GET 请求有长度限制GET 请求只应当用于取回数据(不修改)3、PUT 方法

PUT 用于将数据发送到服务器来创建/更新资源。

POST 和 PU T之间的区别在于 PUT 请求是幂等的(IDempotent)。也就是说,多次调用相同的 PUT 请求将始终产生相同的结果。相反,重复调用POST请求具有多次创建相同资源的副作用。

4、head 方法

head 与 GET 几乎相同,但没有响应主体。

换句话说,如果 GET /users 返回用户列表,那么 head /users 将发出相同的请求,但不会返回用户列表。
head 请求对于在实际发出 GET 请求之前(例如在下载大文件或响应正文之前)检查 GET 请求将返回的内容很有用。

5、比较 GET 与 POST

下面的表格比较了两种 http 方法:GET 和 POST。

 GETPOST
后退按钮/刷新无害数据会被重新提交(浏览器应该告知用户数据会被重新提交)。
书签可收藏为书签不可收藏为书签
缓存能被缓存不能缓存
编码类型application/x-www-form-urlencodedapplication/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。
历史参数保留在浏览器历史中。参数不会保存在浏览器历史中。
对数据长度的限制是的。当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。无限制。
对数据类型的限制只允许 ASCII 字符。没有限制。也允许二进制数据。
安全性

与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。

在发送密码或其他敏感信息时绝不要使用 GET !

POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。
可见性数据在 URL 中对所有人都是可见的。数据不会显示在 URL 中。

 

三、请求头

在定义header中,Content-Type有四种格式,分别为:

1. application/x-www-form-urlencoded,浏览器的原生 form 表单,举例:
POST http://www.example.com http/1.1Content-Type: application/x-www-form-urlencoded;charset=utf-8Title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3
2. multipart/form-data,我们使用表单上传文件时,必须让 form 的 enctyped 等于这个值。直接来看一个请求示例
POST http://www.example.com http/1.1Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA------WebKitFormBoundaryrGKCBY7qhFd3TrwAContent-disposition: form-data; name="text"Title------WebKitFormBoundaryrGKCBY7qhFd3TrwAContent-disposition: form-data; name="file"; filename="Chrome.png"Content-Type: image/pngPNG ... content of Chrome.png ...------WebKitFormBoundaryrGKCBY7qhFd3TrwA--

这个例子稍微复杂点。首先生成了一个 boundary 用于分割不同的字段,为了避免与正文内容重复,boundary 很长很复杂。然后 Content-Type 里指明了数据是以 mutipart/form-data 来编码,本次请求的 boundary 是什么内容。消息主体里按照字段个数又分为多个结构类似的部分,每部分都是以 --boundary 开始,紧接着内容描述信息,然后是回车,最后是字段具体内容(文本或二进制)。如果传输的是文件,还要包含文件名和文件类型信息。消息主体最后以 --boundary-- 标示结束。
这种方式一般用来上传文件,各大服务端语言对它也有着良好的支持。

3. application/Json,JsON 格式支持比键值对复杂得多的结构化数据,这一点也很有用。

Google 的 AngularJs 中的 AJAX 功能,默认就是提交 JsON 字符串。这个是目前最常见的,就不做说明了,例如下面这段代码:

POST http://www.example.com http/1.1Content-Type: application/Json;charset=utf-8{"Title":"test","sub":[1,2,3]}
4. text/xml,XML-RPC(XML Remote Procedure Call)。它是一种使用 http 作为传输协议,XML 作为编码方式的远程调用规范。典型的 XML-RPC 请求是这样的
POST http://www.example.com http/1.1Content-Type: text/xml<!--?xml version="1.0"?--><methodcall>    <methodname>examples.getStatename</methodname>    <params>        <param>            <value><i4>41</i4></value>    </params></methodcall>

XML-RPC 协议简单、功能够用,各种语言的实现都有。它的使用也很广泛,如 wordpress 的 XML-RPC API,搜索引擎的 Ping 服务等等。JavaScript 中,也有现成的库支持以这种方式进行数据交互,能很好的支持已有的 XML-RPC 服务。不过,我个人觉得 XML 结构还是过于臃肿,一般场景用 JsON 会更灵活方便。

  总结

以上是内存溢出为你收集整理的python requests最全 *** 作手册,请求头和请求方法详解,有了这一篇面试就够了全部内容,希望文章能够帮你解决python requests最全 *** 作手册,请求头和请求方法详解,有了这一篇面试就够了所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1183608.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存