python requests 源码阅读笔记

requests结构:

一、__init__.py 中import 其他py文件的方法

requests的使用只需要import之后,直接调用get、post、put、delete、requests等方法

   >>> import requests
   >>> r = requests.get('https://www.python.org')
   >>> r.status_code
   200
   >>> 'Python is a programming language' in r.content
   True

requests的__init__初始化方法中,import api.py里定义的get,post等方法,可以通过模块名直接调用方法。

from .api import request, get, head, post, patch, put, delete, options

在api.py中包括requests常用的get、post、put、delete、option等api方法,它们通过调用api模块中的request产生作用,

api中request方法在模块内实例化一个Session类对象,用上下文管理器with调用Session实例对象的request方法并返回。

Tips:1. 模块仅对外暴露方法,简化外部调用。(而不是封装成类,调用前还要实例化)

             2. 使用with管理方法调用方法,调用结束时及时回收资源

二、session.py方法

requests模块的get,post等方法最终调用的都是Session类的request方法,在Session类request方法中,首先创建Request类实例对象,将实例对象作为参数创建了一个PreparedRequest类实例,再将PreparedRequest类实例作为参数,调用了Session类send方法,。在Session类send方法中,创建HTTPAdapater适配器、调用HTTPAdapater的send方法,处理cookies,hooks,redirects等问题,返回Response响应对象。

三、代码结构

for human beings,从文件名就能看出各个py文件的作用

TODO:1.只看了个流程,具体实现很多还没捋清,待

               2. requests的hook,cookies继续了解

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值