第 56章 HTTP超文本协议2
3 put:以下是一个简单的http put请求的示例,使用python的`requests`库来实现:
重复第二条三行代码
定义要更新的资源的url
url = &34;/api/data/123&34;
准备要更新的数据
data = {
&34;name&34;: &34;john doe&34;,
&34;email&34;: &34;&34;,
&34;age&34;: 30
}
将python字典转换为json
json_data = jsondumps(data)
设置请求头,将内容类型设置为json
headers = {&39;content-type&39;: &39;application/json&39;}
发送put请求
response = requestsput(url, data=json_data, headers=headers)
检查响应状态码
if responsestatus_code == 200:
解析json响应内容(可能有也可能没有,取决于服务器实现)
updated_data = responsejson()
print(updated_data)
else:
print(f&34;请求失败,状态码:{responsestatus_code}&34;)
```
在这个示例中,我们使用`requestsput()`函数向`/api/data/123`发送一个put请求。我们准备了一个包含用户信息的python字典,将其转换为json格式,并将其作为请求体发送。我们还将请求头中的`content-type`设置为`application/json`,以告知服务器我们发送的数据是json格式。
请注意,您需要将`/api/data/123`替换为实际的url
4 delete:以下是一个简单的http delete请求的示例,使用python的`requests`库来实现:
```python
import requests
定义要删除的资源的url
url = &34;重复同上后续代码
发送delete请求
response = requestsdelete(url)
检查响应状态码
if responsestatus_code == 204:
print(&34;资源已成功删除&34;)
else:
print(f&34;请求失败,状态码:{responsestatus_code}&34;)
```
在这个示例中,我们使用`requestsdelete()`函数向`/api/data/123`发送一个delete请求。服务器收到此请求后,会尝试删除相应的资源。如果删除成功,服务器通常会返回204 no content状态码。
请注意,重复第三步骤最后一条
5 head:以下是一个简单的http head请求的示例,使用python的`requests`库来实现。在这个例子中,我们将获取一个网页的头部信息,但不获取其内容:
```python
import requests
定义要获取头部信息的url
url = &34;/&34;
发送head请求
response = requestshead(url)
检查响应状态码
if responsestatus_code == 200:
打印头部信息
print(responseheaders)
else:
print(f&34;请求失败,状态码:{responsestatus_code}&34;)
```
在这个示例中,我们使用`requestshead()`函数向`/`发送一个head请求。服务器收到此请求后,会返回相应的头部信息,但不会返回网页内容。我们检查响应状态码,如果为200 ok,则打印头部信息。
请注意,您需要将`/`替换为实际的url。
6 options:以下是一个简单的http options请求的示例,使用python的`requests`库来实现:
```python
import requests
定义要获取支持的http方法的url
url = &34;/api/data&34;
发送options请求
response = requestsoptions(url)
检查响应状态码
if responsestatus_code == 200:
打印支持的http方法
print(responseheaders[&39;allow&39;])
else:
print(f&34;请求失败,状态码:{responsestatus_code}&34;)
```
在这个示例中,我们使用`requestsoptions()`函数向`/api/data`发送一个options请求。服务器收到此请求后,会返回支持的http方法,通常在响应头中的`allow`字段。我们检查响应状态码,如果为200 ok,则打印支持的http方法。
请注意,更换第三条最后一句
7 connect:用于建立隧道协议的代理服务器。
8 trace:跟踪请求,用于测试或诊断。
9 patch:用于部分更新资源。
http的常见版本有http/11和http/2,其中http/2较http/11具有更高的性能和效率,因为它使用了二进制格式、多路复用、服务器推送等技术。
随着互联网的发展,https(http secure)也越来越流行。https是在http的基础上加入了ssl/tls安全层,以加密数据传输,提高数据安全性和完整性。
以下是一个简单的http请求和响应的示例。
客户端(例如浏览器)向服务器发送get请求以获取html文件:
```
get /indexhtml http/11
host:
user-agent: mozilla/50 (windows nt 100; win64; x64) applewebkit/53736 (khtml, like gecko) chrome/5803029110 safari/53736
accept: text/html,application/xhtml+xml,application/xml;q=09,image/webp,/;q=08
accept-language: en-us,en;q=08
accept-encoding: gzip, deflate, sdch
connection: keep-alive
upgrade-insecure-requests: 1
```
服务器响应请求并返回html文件:
```
http/11 200 ok
date: tue, 01 mar 2023 12:00:00 gmt
server: apache/2429 (unix)
content-length: 8091
content-type: text/html; charset=utf-8
<!doctype html>
<html>
<head>
<title>example website</title>
</head>
<body>
<h1>wele to example website</h1>
<p>here is some example content for your viewing pleasure</p>
</body>
</html>
```
在这个例子中,客户端向服务器发送了一个http get请求,请求服务器的indexhtml文件。服务器接收到请求后,返回了一个http 200 ok状态码,表示请求成功。同时,服务器返回了一个包含html内容的响应。客户端(浏览器)收到响应后,会解析html并显示在屏幕上。