学习查考文档
https://www.w3cschool.cn/requests2/
一, 写代码方式实现接口Get请求
二, Response返回内容讲解
三, 写代码方式实现接口Post请求
四, 特殊情况
一, 实现Get请求
import requests
#方法1
url = "http://*/api/v1/goods"
r1 = requests.get(url)
print(r1.status_code)
print(r1.headers)
print(r1.text)
#方法2
url2 = "http://*/api/v1/login"
params = {
代码语言:txt复制"page": 2,
代码语言:txt复制"size": 2
}
r2 = requests.get(url2, params=params)
print(r2.text)
输出结果
"""
Requests传递URL参数
"""
import requests
#方法1
url = "http://*/api/v1/goods"
payload = {
"page": 1,
"size": 1
}
r1 = requests.get(url, params=payload)
print(r1.status_code)
print(r1.headers)
print(r1.text)
输出结果
(只取到第一页的第一个数据)
二, Response返回内容
-- r.status_code # 响应状态码
-- r.content # 字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩
-- r.headers # 以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None
-- r.json() # Requests中内置的JSON解码器 ,json转成python的字典了
-- r.url # 获取url
-- r.encoding # 编码格式
-- r.cookies # 获取返回的cookie
-- r.text # 字符串方式的响应体,会自动根据响应头部的字符编码进行解码
-- r.ok # 返回True / False 状态码在200-400之间 返回True
# 状态码在400-600之间返回 False
-- r.history # 有重定向请求的时候,可以查看重定向记录
-- r.apparent_encoding # 分析响应编码
第1个例子:
"""
get 请求的路径参数
id 是python的内置函数, 变量不要叫id
"""
import requests
sp_id = 10
url = f"http://*/api/v1/goods/{sp_id}"
print(url)
r1 = requests.get(url)
print(r1.status_code) #200
print(r1.headers) # respond headers
print(r1.text) # 以文本的方式
print(r1.content) # byte 解码 文件,图片
#.json() 用作json解析器
print(r1.json())
print(type(r1.json()))
print(r1.json()"msg")
#输出msg对应的value值
#json是有规律的字符串{"key": value}
print(r1.json().get("msg"))
print(dict(r1.cookies)) # 输出cookies里面的值
第2个例子:
import requests
url = "https://www.baidu.com/"
r = requests.get(url)
#print(r.text) 输出的内容种含有乱码 “æ´å¤äº§å”
#print(r.statuscode)
print(r.encoding) # 使用的编码ISO-8859-1
print(r.apparent_encoding) #正确的编码utf-8
#动态获取到html里面的编码,需要知道返回的html编码
print(r.content)
print(r.content.decode(r.apparent_encoding)) #
#固定用法使用正确的编码格式进行解码
#输出含有中文的文字 “更多产品”
三, 实现Post请求
"""
post请求Content-Type第一种取值的方式
Content-Type: application/x-www-form-urlencoded
"""
import requests
url = "http://*/api/v4/login"
body = {
代码语言:txt复制"username": "test",
代码语言:txt复制"password": "123456"
}
r = requests.post(url, data=body)
print(r.text)
"""
POST请求Content-Type第二种取值的方式
Content-Type: application/josn
POST推荐这种
"""
print("------第一种方法-----")
import requests
url = "http://*/api/v1/login"
body = {
代码语言:txt复制"username": "test",
代码语言:txt复制"password": "123456"
}
r = requests.post(url, json=body)
print(r.status_code)
print(r.json())
"""
POST 不推荐这种
"""
import requests
import json
print("------第二种方法-----")
url = "http://*/api/v1/login"
body = {
代码语言:txt复制"username": "test",
代码语言:txt复制"password": "123456"
}
headers = {
代码语言:txt复制"Content-Type": "application/json"
}
r = requests.post(url, headers=headers, data=json.dumps(body))
print(r.text)
输出结果
四,特殊情况,忽略证书
"""
https请求忽略证书校验
"""
import requests
import warnings
warnings.filterwarnings('ignore')
url = "https://www.cnblogs.com/jiangkeji/"
r = requests.get(url,verify=False)
#print(r.text)
print(r.status_code)
输出结果: