1. GET 和 POST

GET 与 POST 的区别:

[1] - 最直观的就是语义上的区别,GET 用于获取数据,POST 用于提交数据.

[2] - GET请求的数据会附在URL之后,以?分割URL和传输数据,参数之间以&相连;POST把提交的数据则放置在是HTTP包的包体中.

[3] - GET的长度受限于url的长度,而url的长度限制是特定的浏览器和服务器设置的,理论上GET的长度可以无限长.

[4] - POST是没有大小限制的,HTTP协议规范也没有进行大小限制,起限制作用的是服务器的处理程序的处理能力

[5] - POST的安全性要比GET的安全性高.

[6] - POST 和 GET 的选择: 私密性的信息请求使用 POST,查询信息和可以想要通过url分享的信息使用 GET.

更多参考:GET 和 POST 到底有什么区别?- 知乎

2. Python 示例

2.1. GET

import requests 

'''
发送一个 GET 请求
'''

# [1] - 最简单的形式
response = requests.get(url='heeps://baidu.com')

# [2] - 添加定制请求头 headers
# 可以在浏览器 F12 开发者工具 Network 中找到网址的 headers 信息
url = 'https://api.github.com/some/endpoint'
headers = {'user-agent': 'my-app/0.0.1'}
response = requests.get(url, headers)

# [3] - 自定义代理
url = 'https://api.github.com/some/endpoint'
headers = {'user-agent': 'my-app/0.0.1'}
proxies = {"https": "https://127.0.0.1:8889", "http": "http://127.0.0.1:1089"}
response = requests.get(url=url, headers=headers, proxies=proxies)

# [4] - 传递参数
# 浏览器访问的格式如:httpbin.org/get?key=val
payload = {'key1': 'value1', 'key2': 'value2'}
# payload = {'key1': 'value1', 'key2': ['value2', 'value3']}
response = requests.get("http://httpbin.org/get", params=payload)

# [5] - 设置超时
# 经过 timeout 时间之后停止等待响应. 基本上所有的生产代码都应该使用这一参数
# 如果不使用,程序可能会永远失去响应:
response = requests.get('http://github.com', timeout=0.001)

返回结果:

req.ok           // 检查返回码是不是 '200 OK',如果是则返回True,否则返回False
req.url          // 查看请求的URL
req.text         // 查看返回的响应内容,返回的是Unicode数据,一般用于返回文本数据
req.content      // 查看返回的响应内容,返回的是二进制数据,一般用于返回图片、文件等二进制数据
req.status_code  // 查看返回的HTTP状态码,如 200,404,502 等
req.reason       // 查看返回的HTTP状态码文本原因,如 'Not Found', 'OK' 等
req.cookies      // 查看返回的cookies信息
req.header       // 查看返回的头部信息

2.2. POST

# [1]
payload = {'key1': 'value1', 'key2': 'value2'}
response= requests.post("http://httpbin.org/post", data=payload)
print(response)

# [2]
url = "https://api.xxx.com/testing"
payload = {
    'image_url': 'https://test.com/demo.jpg'
}

headers = {
    'authorization': "Bearer <ACCESS_TOKEN>"
}

response = requests.request("POST", url, json=payload, headers=headers)

3. 参考

[1] - Docs - requests

[2] - Python爬虫—requests库get和post方法使用 - 2019.11.14

Last modification:June 29th, 2021 at 01:26 pm