HTTP详细总结

概念

HyperText Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。

特点

  • 基于TCP协议: 面向连接,安全

    TCP是一种面向连接的(建立连接之前是需要经过三次握手)、可靠的、基于字节流的传输层通信协议,在数据传输方面更安全。

  • 基于请求-响应模型的:一次请求对应一次响应

    请求和响应是一一对应关系

  • HTTP协议是无状态协议:对于事物处理没有记忆能力。每次请求-响应都是独立的

    无状态指的是客户端发送HTTP请求给服务端之后,服务端根据请求响应数据,响应完后,不会记录任何信息。这种特性有优点也有缺点,

    • 缺点:多次请求间不能共享数据

    • 优点:速度快

请求数据格式

请求数据总共分为三部分内容,分别是请求行请求头请求体

  • 请求行: HTTP请求中的第一行数据,请求行包含三块内容,分别是 GET[请求方式] /[请求URL路径] HTTP/1.1[HTTP协议及版本]

    请求方式有七种,最常用的是GET和POST

  • 请求头: 第二行开始,格式为key: value形式                                                                            请求头中会包含若干个属性,常见的HTTP请求头有:

    Host: 表示请求的主机名
    User-Agent: 浏览器版本,例如Chrome浏览器的标识类似Mozilla/5.0 ...Chrome/79,IE浏览器的标识类似Mozilla/5.0 (Windows NT ...)like Gecko;
    Accept:表示浏览器能接收的资源类型,如text/*,image/*或者*/*表示所有;
    Accept-Language:表示浏览器偏好的语言,服务器可以据此返回不同语言的网页;
    Accept-Encoding:表示浏览器可以支持的压缩类型,例如gzip, deflate等。

  • 请求体: POST请求的最后一部分,存储请求参数

    如上图红线框的内容就是请求体的内容,请求体和请求头之间是有一个空行隔开。此时浏览器发送的是POST请求,为什么不能使用GET呢?这时就需要回顾GET和POST两个请求之间的区别了:

    • GET请求请求参数在请求行中,没有请求体,POST请求请求参数在请求体中

    • GET请求请求参数大小有限制,POST没有

响应数据格式

响应数据总共分为三部分内容,分别是响应行响应头响应体

  • 响应行:响应数据的第一行,响应行包含三块内容,分别是 HTTP/1.1[HTTP协议及版本] 200[响应状态码] ok[状态码的描述]

  • 响应头:第二行开始,格式为key:value形式

    响应头中会包含若干个属性,常见的HTTP响应头有:

    Content-Type:表示该响应内容的类型,例如text/html,image/jpeg;
    Content-Length:表示该响应内容的长度(字节数);
    Content-Encoding:表示该响应压缩算法,例如gzip;
    Cache-Control:指示客户端应如何缓存,例如max-age=300表示可以最多缓存300秒
    
  • 响应体: 最后一部分。存放响应数据

    上图中<html>...</html>这部分内容就是响应体,它和响应头之间有一个空行隔开。

  • 24
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,下面是一份关于`requests`的详细教程。 首先,介绍一下什么是`requests`: `requests`是一个用于处理HTTP请求的Python库,提供了高效且易于使用的API,使得发送HTTP请求变得非常简单。 安装: 在命令行中运行 `pip install requests` 即可安装requests库。 一些基本的使用方法: 1. 发送GET请求: ``` import requests response = requests.get("https://www.example.com") print(response.status_code) print(response.content) ``` 2. 发送带有参数的GET请求: ``` import requests payload = {'key1': 'value1', 'key2': 'value2'} response = requests.get("https://www.example.com", params=payload) print(response.url) print(response.content) ``` 3. 发送POST请求: ``` import requests payload = {'key1': 'value1', 'key2': 'value2'} response = requests.post("https://www.example.com", data=payload) print(response.status_code) print(response.content) ``` 4. 发送带有请求头的请求: ``` import requests headers = {'User-Agent': 'Mozilla/5.0'} response = requests.get("https://www.example.com", headers=headers) print(response.status_code) print(response.content) ``` 这只是一些使用`requests`的基本方法,该库还提供了其他功能,例如发送带有Cookie的请求,发送带有认证信息的请求,以及使用代理进行请求等等。 希望这份教程对你有所帮助,如果你需要更多信息,请参考官方文档: https://docs.python-requests.org/zh_CN/latest/ 。 ### 回答2: requests是一个Python第三方库,用于发送HTTP请求并处理响应。它提供了简单方便的API,使得发送请求和处理响应变得非常容易。 首先,需要安装requests库。可以通过在终端或命令提示符中运行`pip install requests`来安装。 接下来,在Python代码中导入requests模块:`import requests` 1. 发送GET请求: ``` response = requests.get(url) print(response.text) ``` 其中,url是要发送请求的网址。使用get()函数发送GET请求,并使用response.text获取响应的内容。 2. 发送POST请求: ``` data = {'key1': 'value1', 'key2': 'value2'} response = requests.post(url, data=data) print(response.json()) ``` 其中,url是要发送请求的网址,data是要发送的数据。使用post()函数发送POST请求,并使用response.json()将响应的内容解析为JSON格式。 3. 发送带headers的请求: ``` headers = {'User-Agent': 'Mozilla/5.0'} response = requests.get(url, headers=headers) ``` 其中,headers是一个字典,可以包含请求的头部信息,如User-Agent。 4. 上传文件: ``` files = {'file': open('file.txt', 'rb')} response = requests.post(url, files=files) ``` 其中,file.txt是要上传的文件名。使用post()函数发送POST请求,并通过files参数上传文件。 5. 处理响应: ``` response = requests.get(url) print(response.status_code) print(response.headers) ``` 可以使用response.status_code获取响应的状态码,使用response.headers获取响应的头部信息。 以上是使用requests发送请求和处理响应的基本方法。通过这个简单的教程,可以快速了解如何使用requests库进行网络请求。更详细的文档和教程可以在requests官方网站上找到。 ### 回答3: requests是一个常用的Python第三方库,用于发送HTTP请求和处理响应。它提供了简洁而功能强大的API,使得发送HTTP请求变得非常方便。 首先,要使用requests库,需要先安装它。可以通过pip命令安装:在命令行中运行`pip install requests`。 安装完成后,就可以在Python程序中引入requests库: ``` import requests ``` 接下来,我们可以使用requests发送HTTP请求。最基本的方法是使用`requests.get(url)`来发送GET请求,url参数指定请求的网址。该方法会返回一个Response对象,我们可以使用它的各种方法获取和处理请求的响应。例如: ``` response = requests.get('http://www.example.com') ``` 我们可以使用`response.text`来获取响应的内容,使用`response.status_code`来获取响应的状态码。还可以使用`response.headers`来获取响应的头部信息。此外,requests还提供了其他几种HTTP请求方法,例如POST、PUT、DELETE等。 除了基本的请求方法外,requests还提供了一些辅助方法来处理HTTP请求。例如,可以使用`requests.post(url, data)`来发送带有数据的POST请求;使用`requests.put(url, data)`发送PUT请求;使用`requests.delete(url)`发送DELETE请求等。还可以为请求添加头部信息、设置超时时间、设置代理等。 对于一些特殊的请求,requests也提供了一些相应的方法。例如,可以使用`requests.session()`创建一个会话,并使用该会话发送多个请求,这样就可以保持会话的状态。还可以使用`requests.cookies`模块来处理请求和响应中的Cookie信息。 总结起来,requests是一个非常强大且易于使用的Python库,用于发送HTTP请求和处理响应。通过掌握其基本的使用方法,我们可以方便地进行网页爬取、API调用等任务。在实际使用中,可以查阅官方文档或其他教程来了解更多关于requests的功能和用法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值