00:00
好,那下面呢,我们再来看dispatch of late处理请求的一个过程。好,然后我们也是来顺着它的生命周期去看就行啊,那我们处理请求的这个方法大家都知道,应该是service方法对吧?然后在我们最顶层的这个接口service中,然后我们的service方法呢,是一个抽象方法,然后在generate service里面,然后他把service方法应该是设置为了抽象方法,这个大家还有印象吧。对吧,咱们之前学过solve嘛,对不对,大家看一下,你看他在这是把它设置为了抽象方法,而我们当前在http solve里面来对我们的service方法进行了重写,怎么来进行的重写呢?大家要看好谁是重写的,然后谁是重载的,一共有两个service。这个service是重写的,这个service是重载的,咱们先来看这个。他在这里面呢,就做了一个非常简单的事情。首先呢,然后他来创建了两个http request对象。
01:05
还有一个是http response对象。好,然后把我们当前咱们的这个solve request和solve response是不是转换成了http solve request和http solveet response,又调用了一个有这两个参数的一个service方法能看懂吧,所以说大家来看,在这里面呢,然后它是不是应该就是我们当前咱们到目前为止这个service才是我们真正去处理请求的方法,对不对,然后大家来看。他都干了点啥?之前大家应该都学过,它是通过我们当前咱们的请求方式的不同来调用了不同的方法,比如说我们的请求方式如果为get的话,大家注意这东西就是get啊,你往下看。然后method的下划线delete,它就是delete method的下划线head就是head。所以说来判断我们的请求方式,如果为get,则调用do get方法。
02:02
如果说咱们的请求方式为had,则调用do head,如果请求方式为post,则调用do post,这也是为什么我们之前咱们在学习solve的时候。当我们去创建了一个solve来继承了HTTP之后。然后我们是不是只需要去重写do get和do post就行,因为我们之前咱们在浏览器向服务器发送请求的时候,我们其实也只能去发送get跟post OK吧,行,这是我们httb solve里面这个重写的过程啊,怎么重写的再跟大家说一遍。它是先将我们当前咱们的solve request给转换成了http solve request。将solve response呢给转换成了http service response,然后又去调用了一个service方法,这个service方法里面是有我们刚才所说的那两个参数的,对不对?好,然后在这个重载的service方法中呢,然后它根据请求方式的不同,然后去调用了不同的方法,比如说get请求调用咱们的读get方法,Post请求调用读post方法,对不对,好。
03:12
那下面呢,我们再来看它的子类叫httb solve bin,大家看这里面有重写service吗?没有,所以说我们当前这个里面的service方法是不是应该使用的是http service集成给它的。然后下面大家再来找到framework of,然后咱们找找一下这里面你看一下有没有service啊来。大家看在这儿是不是有啊,在这是不是就有一个service方法。然后他都干了点什么,首先呢,它也是来获取了我们当前咱们这个请求的请求方式,然后来判断了咱们的请求方式,看它是不是等于patch,或者说咱们的请求方式没有请求方式。如果说满足这个条件的话,大家说他是不是会去调用一个process request,叫做执行请求,叫做处理请求,对不对,而如果说要不满足这个条件的话,你就比如说咱们一般发送的请求方式,除了get post,还有delete put之外,就别的就没了。
04:14
对不对,然后咱们的请求方式也不可能是null,对不对,所以说咱们执行的一定是else的内容。然后else里面他都干了点什么呢?他就调用了它的父类的service,谁是他父类的service呀,那不就是他的service么。那他的service里面它重写了吗?没有,那他没有重写,那它用的不就是咱们的http service里面的service方法吗?那不就是这个方法吗?对不对,所以说大家看好了,那因为现在咱们当前的这些类是继承关系。所以说。那我们当前咱们是不是就会把这个service继承给他,然后他就会把这个service继承给他。能看懂吧,好,然后那我们再来看这个service中是怎么来执行的,这个service中它是不是根据我们当前咱们的请求方式的不同,来调用了咱们的不同的方法,比如说do get,然后和do post。
05:13
Do get,然后do post do delete,然后还有do put,像这些方法对不对,对吧,好,然后那我们现在咱们再来看,但是大家不要忘了,你看看这里面啊,然后我们的framework of that,然后他不单将我们的service方法进行了重写,他还干了一件事情。大家来看啊,然后他还干了一件事情是什么?然后看把咱们的do get do post do put do delete do options do全部都重写了。能看懂不全部都重写了,那所以说当我们这个去调用它的负类,去调用它的父类的这一个service方法的时候,负类的service方法中来调用的是do get和do post,但是因为我们现在已经将方法继承给他了,所以说大家想想当他去调用负类的service的时候,然后最终咱们去调用的do get和do post,因为这个方法现在是在这个类中执行的,对不对?所以说那它调用的do get跟do post,是这里面的do get跟do post吗?不是,而是我们framework of里面重写之后的do get和do post。
06:23
能听懂吧。这个大家一定要看好啊。虽然说它调用的是它的父类的service,但是我们现在已经把service方法继承给了framework of,所以说在这个service方法中,它来调用的就是当前这个类中的do get和do post。如果这个类没有去重写do get和do post,那它调用的应该是他继承给的do get和do post,但是大家看它重写了呀。他对我们当前咱们的do get do post是不是都进行了重写对不对,所以说在当在我们当前去调用它的负类的service的时候,它的do get和do post调用的是它本身的,这个大家都能听懂吧。
07:07
好,然后下面大家来看,那我们现在你看看这里面的读get怎么办的呀。调用的process request,诶这个方法刚才好像见过呀,对不对,来,咱们再来找到咱们的这个service啊来。Service大家来看,你看很有意思,如果满足这个条件,调用process request,如果说不满足。调用负类的service,副类的service来调用的,就是根据请求方式的不同调用do get和do post,结果这个do get中你看调用的还是process request,这个里面调用的还是process request,大家看你看这里面调用的是不是都是process request。能看懂吧,那所以说我们在这咱们就总结出来了一个结论,在framework of that里面,不管我们当前咱们用什么样的请求方式,然后不管最终它调用的是do get还是do post,然后我们最终去处理请求的方法肯定是这个process request方法,大家说对不对?
08:13
是不是行啊好,那所以说我们下面咱们是不是只要来看它就行,然后我们来进入到这个方法中,然后大家来看,你看这个方法中它又去调用了谁呢?咱们往下走,大家注意它在这又去调用了do service方法。那do service方法里面是怎么去写的呢?我们现在点开之后,哎,大家会发现这是一个抽象方法。那所以说到这它是不是就结束了,但是我们当前真正去处理请求的是这个solve dispatch solve,所以说通过继承和实现的关系,我们已经把咱们的service最终执行的方法do service找到了,那所以说当这些方法都继承给dispatch service的时候,我们在这个类中去处理请求的方法是不是就是do service,大家说对不对?来咱们在这呢,来找一下,在这呢叫做do service,然后do service方法里面他又干了点什么,大家往下看,然后他在这呢,又去调用了一个do dispach方法。
09:17
然后这个方法是谁呢?大家看好,那也就是说等到我们去执行到这个位置的时候,我们真正去处理请求的方法就变成了读dispatch了。然后咱们来。点开,然后大家会发现来,你看啊,咱们继续往下走,你看,哎,在这咱们好像见过。这不是来调用咱们的过滤器的什么啊,调用我们当前拦截器的pre handle方法吗?这不是我们当前来执行咱们的控制器方法吗?对不对?然后这个不是来调用我们的拦截器的post handle方法吗?OK,咱们现在呢,就已经验证了这个过程了。为什么我们之前咱们再去看咱们的拦截器的执行啊,或者说我们所创建的视图的时候,我们来找到的是1061好,为什么?就是因为我们刚才通过咱们这个处理请求的整个过程,然后我们从service方法开始看,然后咱们最后看到了什么叫do,叫process request,又看到了do service do service,最终调用的do dispach,然后我们当前咱们所看到的1061行,包括咱们在这儿所看到的一些源码,它都是杜迪帕方法里面的。
10:30
能看懂吧,所以说咱们就能够得到一个结果,这就是我们dispatch of处理请求的一个过程。对不对,好啊,像然后这里面呢,它是不是会创建一些对象,比如说来创建model and view。对吧,然后呢,然后来创建一些什么map map的handle了,这个大家应该也认识,这个是什么,我们在调用咱们的拦截器的各个方法的时候来使用的一个对象,它的类型叫做handle了,Excution Cha叫做处理器执行链,里面有三个内容,第一个是我们当前的处理器方法,还有一个就是我们的。
11:09
拦截器集合,还有一个是拦截器索引,对不对?好,然后再往下又来创建了一个handler adapter,叫做处理器适配器。干什么呢?大家想一下,专门来调用我们当前的控制器方法的,对不对?然后紧接着OK,就开始真正处理请求的一个过程。然后首先呢,先来干嘛调用咱们的拦截器的handle方法,然后再来调用我们当前的控制器方法,然后下面紧接着来执行的是拦截器的post handle,然后再往下来处理咱们当前的model and view,然后在这个方法里面是不是通过咱们在这打的断点这一行叫做render来渲染了视图,然后最后是不是又调用了咱们的拦截其中的after completion方法,等到我们渲染完视图之后,然后在这调用了咱们拦截器的after completion。
12:01
能看懂吧,好,所以说大家注意,这就是我们当前请求的一个过程,处理请求的一个过程。我们是顺着我们当前咱们的一个这个solve的一个生命周期,生命周期中一个方法叫service,它是来处理请求的,所以说咱们只要按照这个过程,按照这个顺序,然后一步一步的去找就可以了啊。OK吧,行,然后咱们在笔记里面给大家写的也有,比如说process request,然后来调用的是咱们的do service,然后do service中又调用了咱们的do dispatch,而do dispatch里面,然后是不是来调用了我们当前就是我们当前处理请求的一个完整的过程,对吧?然后首先在这创建的map handler叫做过叫做处理器执行链,然后在这来创建的叫做处理器适配器来执行我们的控制器方法的,然后在这调用我们的拦截器的pre handle,对吧?跟咱们刚才说的一样,调用控制器方法,调用拦截器的post handle,然后再往下咱们的这一个render方法是用来渲染视图的,然后渲染完毕视图之后,最后咱们来调用了拦截器的after comp OK吧,行,这个大家注意。
13:17
那这个就是我们从咱们的生命周期的方法中,然后来观察了我们SPVC处理请求的一个过程啊。好。
我来说两句