requests库的简单使用

import requests

rsp = requests.get('https://www.baidu.com')


print(rsp.text)  # 字符串
print(rsp.content)  # bytes,字节。 == 二进制

# print(rsp.json())  # 字典格式,当返回是字典格式时可用

 设置请求方法:

import requests

# 常用的requests的请求方法

resp = requests.get('http://httpbin.org/get')

resp = requests.post('http://httpbin.org/get')

resp = requests.put('http://httpbin.org/get')

resp = requests.delete('http://httpbin.org/get')


# 自动化测试

method = 'post'
# 通用的方法1
if method == 'get':
    requests.get('http://httpbin.org/get')
elif method =='post':
    requests.post('http://httpbin.org/get')

# 通用的方法2
func_name = getattr(requests, method)
resp = func_name('http://httpbin.org/get')

# 通用的方法3
requests.request(method, 'http://httpbin.org/get')

print(resp)

设置请求头:

import requests

url = 'https://www.httpbin.org/get'
headers = {"xxx": "123", "yyy": "456", "User-Agent": "aaa"}
# get
# 添加请求头,使用字典存储自定义的请求头
resp = requests.request('get', url=url, headers=headers)
print(resp.text)

# 自定义请求头,直接将请求头保存到字典当中,通过headers 关键字参数传递

设置请求参数:

import requests

url = 'http://httpbin.org/post'

# get请求
# 1. 请求头传输

# 2. URL参数,query_string,查询字符串
# url = f"{url}?username=qq&pwd=123"
# resp = requests.request('get', url)
# print(resp)

# 3. URL参数 方法2:params 关键字参数就是设置URL参数的
params = {"username": "qq","pwd": "123"}
resp = requests.request('get', url, params=params)
# print(resp.text)

# 4. form-data, 存在字典中,通过data关键字参数传递
data = {"username": "qq", "pwd": "123"}
resp = requests.request('post', url, data=data)
# print(resp.text)

# 5. 支持form-data, query string, header 同时传递

# 6. json数据
data = {"username": "qq", "pwd": "123"}
resp = requests.request('post', url, json=data)
print(resp.text)

# 7. 不能同时传递json和form-data,因为它们都是请求体

设置响应的格式:

import requests
import json

url = 'http://httpbin.org/post'

resp = requests.request('post', url)

# print(resp.text)  # str
# print(resp.content)  # bytes
# print(resp.json())  # dict

# text, content, json()  格式转化
#  text ==》编码 content

new_content = resp.text.encode()
print(new_content)
# content ==》解码 text
new_text = resp.content.decode()
print(new_text)

# text ==>字典  eval()  这种方法不安全,"sudo rm -rf /" 假如有这种代码,容易误操作
# 字典 ===》text  使用''

# eval 本质:转化为可以执行的python代码
# text ===》特定的格式,json  是字符串,内容是键值对的字符串,键必须使用双引号,布尔值使用小写的true和false
# 在json中null == python中的None,不支持圆括号()
"""
{"key": "value", "key1": [1, 2, 3], "key2": true, "key3": {}}
"""

# JSON 转化成python字典
json_data = '{"key": "value", "key1": [1,2,3], "key2": true, "key3": null}'

# JSON===>dict ,反序列化
dict_data = json.loads(json_data)
print(dict_data)  # 其中key2和key3会打印首字母大写的True和None

# dict ==> json 的数据格式。序列化
json_new_data = json.dumps(dict_data)
print(json_new_data)

# 序列化和反序列化面试问题
# 序列化:編程语言的数据类型转化成通用的数据格式,文本和二边制。String
# 反序列化: 通用的数据格式转成编程语言的数据类型.

 token的处理:

"""
操作思路:
1, 登录,得到登录接口返回的token值,包含tokenyype,bearer
2, 再访问其他接口时,带上token值
3,token放在请求的什么位置,一般由接口开发者定义
4,标准的规范是放在Authorization 的请求头中,通常会设置一个前缀
Bearer, JWT
Authorization: Bearer token值
"""

import requests

url = 'http://api.lemonban.com:8766/futureloan/member/login'
headers = {"X-Lemonban-Media-Type": "lemonban.v2", "Content-Type": "application/json"}
data = {
    "mobile_phone": "",
    "pwd": ""
}
resp = requests.post(url,headers=headers, json=data)
print(resp.text)

# 得到token
json_resp = resp.json()
print(json_resp["data"]["token_info"]["token"])
原文地址:https://www.cnblogs.com/wsfsd/p/15420591.html