目录
前言:
别人文章: 废话不说, 直接上代码, 我的文章: 废话很多, 代码不多
安装及验证:
直接命令行输入进行安装:
pip3 install requests
安装完成后可以在PyCharm中导入, 以此验证是否安装成功
import requests
使用:
尝试使用requests进行接口请求
# 第一步, 先导入模块
import requests
# 第二步, 创建接口请求对象, 比如是个get请求方式
re = requests.get(https://www.baidu.com)
# 第三步, 接口请求完成后, 查看接口返回相关信息
print(re.status_code)
除了有获取状态码的方法, 还有一些其他常用的方法:
1. json() 接口返回的信息, 以json形式展示
2. text 接口返回的信息, 以text形式展示
3. headers 返回接口的响应头信息
Python requests 模块 | 菜鸟教程 (runoob.com)
传参方式:
有的接口请求是需要参数的, 具体使用哪个形参去传, 要看这个接口的请求头
后来才知道, 不同的请求头, 传参方式也不一样, 可以看出我是真的没什么经验.`.`
1. content-type: application/json 使用json传参
2. content-type: application/x-www-form-urlencoded 使用data传参
3. 没有content-type 使用params传参
4. content-type: multipart/form-data 使用files传参
5. content-type: text/plain 使用data传参
连续接口请求:
使用requests.get()这样的, 只是单接口的请求, 如果想要进行连续请求, 需要每次请求接口时都要传固定的参数Cookie什么的, 比较麻烦
可以使用创建session()来进行一个连续请求会话, session()会自动保持cookie的传递, 要注意的是,
requests.session()只能保持 cookiejar 类型的cookie,
import requests
session = requests.session()
目前遇到的比较严重问题:
1. 使用session()连续请求时状态码401
之前只知道session可以自动处理cookie保持连续会话状态, 但是当我真正使用时session()登录完成, 准备进行第二次接口请求后, 状态码一直是401(未登录), 后来抓包发现是登录后的响应头里使用的是token, 而在requests.session()中发现登录后响应头中没有自动保存token, 手动更新下好了
import requests
ip = "xxxxs://xxxxxx.xxx"
datas = {
"username": "xxxxxxxx",
"password": "xxxxxxxx"
}
session = requests.session()
# 登录
login = session.request("post", f"{ip}/app-apis/login/pwd_login", json=datas)
# 手动更新session的头部信息, 添加token参数为登录后的token
session.headers["token"] = login.headers["token"]
# 只有登录后才能请求的接口, 比如获取个人信息
userinfo = session.request("get", f"{ip}/app-apis/current_user/info")
print(userinfo.json())
连接数据库:
因为测完接口的话一般都要去数据库查询数据是否准确, 所以可以这里再记录下如何操作数据库,
Python连接数据库基本还是比较简单的, 不论什么数据库基本操作方式都是一样的,
需要连接哪个数据库, 就先安装哪个数据库的模块
比如我这里用的是PostgreSQL, 对应的模块就是psycopg2, 哈哈, 我是网上搜索后知道的
pip3 install psycopg2
安装后打开Pycharm
import psycopg2
# 先建立连接
connection = psycopg2.connect(
user="xxxx",
password="xxx",
host="xxx",
port="xxxx",
database="xxx"
)
"""
psycopg2
- *dbname*:数据库名称
- *database*:数据库名称(仅作为关键字参数)
- *user*:用于验证的用户名
- *password*:用于验证的密码
- *host*:数据库主机地址(如果未提供,则默认为UNIX套接字)
- *port*:连接端口号(如果未提供,默认为5432)
"""
# 创建游标, 什么是游标呢? 我也不知道, 不过有了游标才能执行sql语句
cursor = connection.cursor()
# 执行SQL: 先创建一个查询的sql, 然后使用游标执行
query = "SELECT ......."
cursor.execute(query)
"""
除了查询语句, 其他语句都需要额外进行一步提交的操作
try:
# 执行SQL语句
cursor.execute(sql)
# 提交到数据库执行
connection.commit()
except:
# 发生错误时回滚
connection.rollback()
"""
# 输出返回信息
for i in cursor:
print(i)
# 执行完成后关闭连接: 先关闭游标,再关闭连接
cursor.close()
connection.close()
连接mysql的, Python3 MySQL 数据库连接 – PyMySQL 驱动 | 菜鸟教程 (runoob.com)