使用Python获取和发布请求

本文讨论了Python中的两种HTTP(超文本传输协议)请求方法GET和post请求,以及它们在Python中的实现。

null

什么是HTTP? HTTP是一组协议,旨在实现客户端和服务器之间的通信。它是客户端和服务器之间的请求-响应协议。 web浏览器可以是客户端,而托管网站的计算机上的应用程序可以是服务器。

因此,要从服务器请求响应,主要有两种方法:

  1. 收到 :从服务器请求数据。
  2. 邮递 :将要处理的数据提交到服务器。

下面是一个简单的图表,解释了GET和POST方法的基本概念。 iservice_post_get 现在,要在python中发出HTTP请求,我们可以使用以下几个HTTP库:

上面列出的库中最优雅、最简单的是Requests。在本文中,我们将使用请求库。要下载并安装请求库,请使用以下命令:

pip install requests

或者,从 在这里 并手动安装。

提出Get请求

# importing the requests library
import requests
# api-endpoint
# location given here
location = "delhi technological university"
# defining a params dict for the parameters to be sent to the API
PARAMS = { 'address' :location}
# sending get request and saving the response as response object
r = requests.get(url = URL, params = PARAMS)
# extracting data in json format
data = r.json()
# extracting latitude, longitude and formatted address
# of the first matching location
latitude = data[ 'results' ][ 0 ][ 'geometry' ][ 'location' ][ 'lat' ]
longitude = data[ 'results' ][ 0 ][ 'geometry' ][ 'location' ][ 'lng' ]
formatted_address = data[ 'results' ][ 0 ][ 'formatted_address' ]
# printing the output
print ( "Latitude:%sLongitude:%sFormatted Address:%s"
% (latitude, longitude,formatted_address))


输出: GET-and-POST-requests-using-Python

上面的示例通过向Google Maps API发送GET请求来查找给定位置的纬度、经度和格式化地址。API(应用程序编程接口)使您能够以有限的方式访问程序的内部功能。在大多数情况下,提供的数据都是 JSON(JavaScript对象表示法) 格式(在Python中作为字典对象实现!)。 需要推断的要点:

  • PARAMS = {'address':location}

    GET请求的URL通常带有一些参数。对于请求库,参数可以定义为字典。这些参数稍后会被解析并添加到基本url或api端点。 要了解参数角色,请尝试打印 r、 网址 创建响应对象之后。你会看到这样的情况:

    http://maps.googleapis.com/maps/api/geocode/json?address=delhi+technological+university

    这是发出GET请求的实际URL

  • r = requests.get(url = URL, params = PARAMS)

    在这里,我们创建一个响应对象“r”,它将存储请求响应。我们使用请求。方法,因为我们正在发送get请求。我们传递的两个参数是url和参数字典。

  • data = r.json()

    现在,为了从响应对象检索数据,我们需要将原始响应内容转换为JSON类型的数据结构。这是通过使用json()方法实现的。最后,我们通过解析JSON类型的对象来提取所需的信息。

发帖请求

# importing the requests library
import requests
# defining the api-endpoint
# your API key here
API_KEY = "XXXXXXXXXXXXXXXXX"
# your source code here
source_code = '''
print("Hello, world!")
a = 1
b = 2
print(a + b)
'''
# data to be sent to api
data = { 'api_dev_key' :API_KEY,
'api_option' : 'paste' ,
'api_paste_code' :source_code,
'api_paste_format' : 'python' }
# sending post request and saving response as response object
r = requests.post(url = API_ENDPOINT, data = data)
# extracting response text
pastebin_url = r.text
print ( "The pastebin URL is:%s" % pastebin_url)


这个例子解释了如何粘贴你的 源代码 巴斯德宾。通用域名格式 通过向PASTEBIN API发送POST请求。 首先,您需要通过 在这里注册 然后访问你的 这里是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”,它将存储请求响应。我们使用请求。方法,因为我们正在发送post请求。我们传递的两个参数是url和数据字典。

  • pastebin_url = r.text

    作为响应,服务器处理发送给它的数据,并发送用户的pastebin URL 源代码 可以通过 r、 文本 .

请求。邮递 该方法可以用于许多其他任务,如填写和提交网络表单,使用Facebook Graph API在FB时间线上发布等。

以下是一些需要思考的要点:

  • 当方法为GET时,所有表单数据都被编码到URL中,并附加到 行动 URL作为查询字符串参数。使用POST时,表单数据将显示在 消息体 HTTP请求的一部分。
  • 在GET方法中,参数数据仅限于我们可以填充到请求行(URL)中的内容。最安全的方法是使用不到2K的参数,有些服务器最多可以处理64K的参数。在POST方法中没有这样的问题,因为我们发送了数据 消息体 而不是URL。
  • GET方法中只允许使用ASCII字符发送数据。POST方法中没有这样的限制。
  • GET比POST更不安全,因为发送的数据是URL的一部分。因此,在发送密码或其他敏感信息时,不应使用GET方法。

本博客由 尼希尔·库马尔 .如果你喜欢GeekSforgeks并想贡献自己的力量,你也可以用write写一篇文章。极客。组织或邮寄你的文章进行评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。

如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享