📅  最后修改于: 2020-04-15 05:24:25             🧑  作者: Mango
这篇文章讨论了Python中的两个HTTP(超文本传输协议)请求方法GET和POST请求以及它们在Python中的实现。
什么是HTTP?
HTTP是一组旨在支持客户端和服务器之间通信的协议。它用作客户端和服务器之间的请求-响应协议。
Web浏览器可能是客户端,托管网站的计算机上的应用程序可能是服务器。
因此,要从服务器请求响应,主要有两种方法:
这是一个简单的图,说明了GET和POST方法的基本概念。
现在,要在Python中发出HTTP请求,我们可以使用几个HTTP库,例如:
上面列出的库中最优雅,最简单的是requests。我们将在本文中使用requests库。要下载并安装请求库,请使用以下命令:
pip install requests
或者,从此处下载它并手动安装。
发出获取请求
# 导入requests库
import requests
# api端点
URL = "http://maps.googleapis.com/maps/api/geocode/json"
# 此处给出的位置
location = "delhi technological university"
# 为要发送到API的参数定义一个params dict
PARAMS = {'address':location}
# 发送获取请求并将响应保存为响应对象
r = requests.get(url = URL, params = PARAMS)
# 以json格式提取数据
data = r.json()
# 提取第一个匹配位置的纬度,经度和格式化地址
latitude = data['results'][0]['geometry']['location']['lat']
longitude = data['results'][0]['geometry']['location']['lng']
formatted_address = data['results'][0]['formatted_address']
# 打印输出
print("Latitude:%s\nLongitude:%s\nFormatted Address:%s"
%(latitude, longitude,formatted_address))
输出:
上面的示例通过向Google Maps API发送GET请求来查找给定位置的纬度,经度和格式地址。API(应用程序编程接口)使您能够以有限的方式访问程序的内部功能。并且在大多数情况下,提供的数据为JSON(JavaScript对象表示法)格式(在Python中实现为字典对象!)。
重要要点:
PARAMS = {'address':location}
GET请求的URL通常带有一些参数。对于请求库,可以将参数定义为字典。这些参数随后将被解析并添加到基本url或api端点中。
要了解参数角色,请在创建响应对象后尝试打印r.url。您将看到如下内容:
http://maps.googleapis.com/maps/api/geocode/json?address=delhi+technologic+university
这是发出GET请求的实际URL
r = request.get(URL = URL,params = PARAMS)
在这里,我们创建一个响应对象“ r”,该对象将存储请求-响应。我们使用request.get()方法,因为我们正在发送GET请求。我们传递的两个参数是url和参数字典。
data = r.json()
发出POST请求
# 导入请求库
import requests
# 定义api端点
API_ENDPOINT = "http://pastebin.com/api/api_post.php"
# 您的API密钥在这里
API_KEY = "XXXXXXXXXXXXXXXXX"
# 您的源代码在这里
source_code = '''
print("Hello, world!")
a = 1
b = 2
print(a + b)
'''
# 数据要发送到api
data = {'api_dev_key':API_KEY,
'api_option':'paste',
'api_paste_code':source_code,
'api_paste_format':'Python'}
# 发送发布请求并将响应保存为响应对象
r = requests.post(url = API_ENDPOINT, data = data)
# 提取响应文本
pastebin_url = r.text
print("The pastebin URL is:%s"%pastebin_url)
本示例说明了如何通过将POST请求发送到PASTEBIN API 来将source_code粘贴到pastebin.com。
首先,您需要通过在此处进行注册来生成API密钥,然后在此处访问您的API密钥。
该代码的重要功能:
data = {'api_dev_key':API_KEY,
'api_option':'paste',
'api_paste_code':source_code,
'api_paste_format':'Python'}
同样,我们将需要将一些数据传递到API服务器。我们将此数据存储为字典。
r = requests.post(url = API_ENDPOINT, data = data)
在这里,我们创建一个响应对象“ r”,该对象将存储请求-响应。我们使用request.post()方法,因为我们正在发送POST请求。我们传递的两个参数是url和数据字典。
pastebin_url = r.text
request.post方法可用于许多其他任务,例如填写和提交Web表单,使用Facebook Graph API在FB时间轴上发布等。
以下是需要考虑的一些重要点: