代码改变世界

Python - requests模块、接口

2022-04-01 11:02  起个昵称  阅读(189)  评论(0编辑  收藏  举报
接口类型
http(默认端口80)
https(默认端口443)
webservice:通过soap协议来获取数据

客户端 - 服务端 - 数据库
客户端请求 与 服务端响应

工具: F12(网页)、Fiddler、wireshark(底层)、charles(手机端)

payload 载荷,即请求体

通信过程:
建立连接 - 发送请求数据 - 接收响应数据 - 断开连接
请求数据包:
请求行、消息头、空行、消息体
响应数据包:
状态行、消息头、空行、消息体

响应状态码:
1xx:消息响应 --表示请求已接收,继续处理
2xx:成功响应 --表示请求已被成功接收、理解、接受
3xx:重定向消息 --要完成请求必须进行更进一步的操作
4xx:客户端错误响应 --请求有语法错误或请求无法实现
5xx:服务端错误响应 --服务器未能实现合法的请求
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status

3次握手、4次挥手

Cookie/Token:客户端和服务端之间的授权机制
Session:服务端和数据库之间的授权机制

客户端提交信息给服务端,服务端生成一个cookies返回给客户端,也会把这个cookies保存在数据库
数量多会造成数据库超负荷
客户端提交信息给服务端,服务端生成一个token返回给客户端,token不会保存在数据库

如果要传输非常大的文件作为multipart/form-data请求,可以使用requests-toolbelt包


url = 'http://www.xxxxxx.com'
req_headers = {}
req_data = {}

# get请求,不带参数
res1 = requests.get(url)
# get请求,带参数
requests.get(url, params={'key1':'value1', 'key2':'value2'}) # 相当于http://www.xxxxxx.com?key1=value1&key2=value2
# post请求
res2 = requests.post(url, data=req_data, headers=req_headers)
# 请求数据为json格式时,json=data
res3 = requests.post(url, json=req_data, headers=req_headers)

# 获取响应状态码
print(resp.status_code)
# 获取响应头
print(resp.headers)
# 获取响应体 - 字符串
print(resp.text)
# 获取响应体 - 字符串转成字典
print(resp.json)