本文主要是介绍requests进行http请求D21,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1)requests介绍
"""导入requests
客户端:发送请求的一方"""
import requests
# # 1)发送GET请求,需要传递参数,URL
# url = "http://www.baidu.com"
# res = requests.get(url)
# # 响应对象
# print(res)
# # 获取响应状态码
# print(res.status_code)
# # 获取返回的数据,获取文本
# print(res.text)
# # HTML页面
# # 获取内容
# print(res.content)
# # 返回的是字典,如果接口返回的不是json格式 res.json()报错
# # print(res.json())
"""发送参数的方式:
#URL:query string:查询字符串。GET基本用query string
#body:form-data/json
#headers:"""
# 2)发送post请求
url = "https://openapiv5.ketangpai.com//UserApi/login"
data = {"email": "13370938296", "password": "wu1995", "remember": "0", "code": "", "mobile": "", "type": "login",
"reqtimestamp": 1653535421948}
headers = {"Content-Type": "application/json"}
# data表示form表单格式数据 content-type:form-data
# res = requests.post(url, data=data)
# json数据,json关键字 content-type:application/json
res = requests.post(url, json=data)
print(res.status_code)
print(res.text)
print(res.content)
print(res.json())
res_data = res.json()
# ## 获取token
token = res_data["data"]["token"]
print(token)
"""封装requests请求"""import loggingimport requestsdef visit(url,params=None,json=None,data=None,method="get",**kwargs):"""访问接口,返回res.json()"""res = requests.request(method,url,params=params,json=json,data=data,**kwargs)try:return res.json()except Exception as e:logging.error("返回数据不是json格式{}".format(e))return Noneif __name__ == '__main__':url = "https://openapiv5.ketangpai.com//UserApi/login"data = {"email": "13370938296", "password": "wu1995", "remember": "0", "code": "", "mobile": "", "type": "login","reqtimestamp": 1653535421948}res = visit(url, json=data, method="post")print(res)
作业:
requests 作业根据上课学到的知识,
使用函数,完成自己的 requests 模块封装。
( 选做 )采用类的方式封装 requests
上期答案:
1、 GET 和 POST 区别
- GET 表示从服务器上获取资源,POST 表示向服务器传送数据,创建资源;
- GET 没有请求体,POST 有请求体;
- GET 请求参数(query string查询字符串)放在url中以`?key1=value1&key2=value2`(query string)的形式, POST 不仅可以查询字符串,而且可以放在请求体里面。
2、cookie , session 和 token 区别
cookie和 session
①Cookie可以存储在浏览器或者本地,Session只能存在服务器
②session 能够存储任意的 java 对象,cookie 只能存储 String 类型的对象
③Session比Cookie更具有安全性(Cookie有安全隐患,通过拦截或本地文件找得到你的cookie后可以进行攻击)
④Session占用服务器性能,Session过多,增加服务器压力
⑤单个Cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个Cookie,Session是没有大小限制和服务器的内存大小有关。Token 和 Session
1. token 是需要手动传到参数当中的。 session 派发的 session_id 自动存储在浏览器的 cookie api.keyou.site/ 当中,
在下次访问这个网站的时候,会自动带上。
2. session_id 会存到服务器,需要消耗资源, 在浏览器传输过来,要查询,也消耗资源。(IO)
3. token 不需要存储到服务器,服务器会解密,消耗 cpu,
4. token 可以跨平台,跨域。 session
3、三次握手四次挥手是什么?
- 第一次握手:建立连接时,客户端向服务端发送请求报文(SYN),“我想建立连接”
- 第二次握手:服务器收到请求报文后,如同意连接,则向客户端发送确认报文(SYN/ACK)“同意建立”
- 第三次握手:客户端收到服务器的确认后,再次向服务器发送确认报文,完成连接(ACK)
- 三次握手主要是为了防止已经失效的请求报文字段发送给服务器,浪费资源。
- 第一次挥手:客户端想分手,发送消息(FIN)给服务器
- 第二次挥手:服务器通知客户端已经接受的挥手请求,返回确认消息(ACK),但还没做好分手准备;
- 第三次挥手:服务器已经做好分手准备,通知客户端(FIN)
- 第四次挥手:客户端发送消息给服务器(ACK),确认分手,服务器关闭连接。
4、你知道的常用状态码有哪些?代表什么意思
- 201 CREATED
- 通过POST或PUT创建资源成功
- 204 NO CONTENT
- 资源修改成功,但是没有返回内容
- 常用于DELETE操作的返回
- Redirection - 3xx:重定向类,为了完成请求,必须进一步执行的动作
- 301 永久重定向
- 302 临时重定向
- 304 Not Modified 使用缓存数据
- Client Error - 4xx:客户端错误类,请求包含语法错误或者请求无法实现
- - 401 UNAUTHORIZED
- - 没有权限访问该资源
- 典型情况:用户没有登录,没有获得对应的access token而直接访问某资源
- 403 FORBIDDEN
- 禁止访问
- 典型情况:虽然用户已登录,但是去更新/删除需要更高权限才能操作的资源
- 405 METHOD NOT ALLOWED
- 方法不允许
- 举例:比如某个资源不允许POST请求,但是你确发起了POST请求
- 5xx:服务器错误
- 502 网关错误
这篇关于requests进行http请求D21的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!