00:00
好,各位同学,下面呢,我们继续来学习基于函数式编程实现web blocks,刚才呢,我们完成这个handle的这么一个编写,里边就是我们的具体功能,它的一些实现,然后咱们下面继续往下做,下面做什么呢?就来写这个初始化服务器,包括编写U头,完成里边这个相应的过程,那下面要写什么呢?我给各位画张图,通一张图,让各位有一个更清晰的认识,那这里边我们要用这个。函数式编程模型方式做welllos里边主要要写这么几个东西,给各位来画一下啊。首先我们要写第一部分。是什么呢?就是咱刚才说那个叫handle了。比如我们的具体这些功能,或者具体那个操作,比如说你的添加、修改、删除等等,咱们现在把这个已经写完了,就刚才我们写这个user handle里面就做这个ID查询,查询所有包括添加,然后这个选完之后,咱还要写个什么,就是写一个叫router。
01:06
UR是什么呢?就是你的路由,比如我现在我这路由加路由,我叫user,杠一让他执行我这个handle到中那个ID查询方法,假为路由叫user,那执行我里边的get o user方法,假如我路由叫C,那执行里边的C方法,就是让路由跟我这个handle字里面去操作有一定关系,通过路由能到里面去的方法,在这过程中,咱除了写路由之外,路由跟我的handle者是不是要做一个匹配的一个关系,所以里边还有一个东西,就是里边那个匹配器,或者说叫适配器。这个咱要做个编写,比如代码都有体现,那适配器什么意思呢?举个例子啊,比如我现在啊,我的电脑要充电,那你注意咱是不是要需要有那个接头,就是那电脑就是要跟那接头插上,然后把接头另一端要插到我们电源上,这里边有一个叫适配器,假如我的电脑是USB接口,那我有一个USB接口这么一个线,然后另一端是插到你那个插线板上,这个过程叫适配,所以里边还需要做这个适配过程,通过适配让路由执行里边的具体操作啊,这点一会要代码中体现。
02:19
然后除了这些之外,里边还有一个核心的部分,或者说最核心部分有个什么,咱是不是要有一个服务器啊,它是不是要在我们的服务器中进行运行,所以咱最后可能要运行一个服务器,就好比说我要给电脑充电,那这个时候我是不是要有电才能充电,没有电不能充电吧,所以咱最后要要手动构建一个服务器,主要就是这么一个东西,咱目前把handle德ler完成了具体操作,那下面咱写这个路由,包括适配,包括这个服务器,把里边这几部分给它完成,这就是我们做。编程是。模型,包括里边这个具体过程,大家把这知道啊,然后咱们下面来写一下啊,刚才选了handle,那我们下面继续来做,咱们来到我们的代码中。
03:08
在代码中怎么做呢?比如我现在啊,在里边我就创建这么一个类。加这个类,我起名字就叫这个server啊,咱就叫server。这个类啊,把它创建。然后创建之后呢,在server类中,首先我们写第一个方法就来创建它那个router的路由,通过路由去调用里边的具体方法,咱把路由做创建,那路由怎么创建,刚才提到路由它用到一个接口叫router function,所以咱们写方法中我们就要写一下public,返回到这个类型,就这个routeor。Function就是它这个啊router function在里边有一个反问类型,我们叫这个。Server刚才都提到过啊,Server。
04:02
Response,把这个我们给他做个返回,我把依赖引入。然后咱们给这个方法起个名字,比如我教这个。Ruler。Function啊,为了区分啊,我叫rooting function。这是我们写的一个路由的这么一个方法,在这里边我们做那个具体操作啊,你注意它返回类型,就这个root function是咱说那个路由的一个重要接口,然后在里边我们要怎么去做呢?给大家说明,就是大家看这张图上,因为现在路由是不是要执行你handle中的具体方法呀,所以我们现在把这handle在里边先做一个这么一个创业,然后为了调用里边的具体方法,咱需要做这个事情啊,那我在里边给各位来写一下啊。首先怎么做呢?咱就定义一个叫user。Handle,比如我叫这个handle,等于就是new上一个user handle,在user handle里边咱需要装一个参数,这参数就是我们的service,因为咱要通过service独立操作嘛,然后把service创建出来。
05:11
User。Service,我们叫这个user service等于user上一个user service的实现类,因为它是接口实现类。然后咱们把这个user service给他就。传进去,现在先串这个对象,为了咱一会儿路由中进行使用,然后创建之后,咱下面怎么做呢?在里边咱又直接调用这个叫router。写下啊U头方式里边有个方法,这方法它的名字就叫做入。然后写一下啊,如方程里边有个方法叫这个。Root,然后这个方法里边有它对应的一些相应的参数,然后它里边怎么写,给各位写一下啊,首先这里边呢,有一个结构啊,结构先说明一下啊,它的结构中第一个就是你的提交方式,比如说我们现在咱根据ID查询是不是一个get提交,那要加一个get啊get提交。
06:10
它是一个常量,大家可以直接写,然后在get里边加什么,加上你请求那个路径,比如我的路径,比如我叫users。然后后面传入它的这个ID啊,咱们把这个加上这个依赖,我先引入,然后咱们看啊get是这里边一个常量,咱们可以直接进行使用。包括你看啊,就是里边的这么一个东西盖头。Get提交,然后这个选完之后,在这里边的后面咱们可以继续来加,后面加什么呢?就是我这个请求,这是一个路径设置,然后后面加上,你再要它里边接收返回是什么类型的数据,包括它要调哈中的哪个方法,咱需要做设置,那里边我加上一个叫and and中加上一个方法,这些方法叫accept。
07:04
At,然后里边加上你就是这那个类型,这类型,比如咱来一个叫刚才写过OB。杠JC啊,加上这个类型,我把依赖给它都顶进来啊,等于把依赖做一个引入。就是这个啊。Accept。这是里边的这么一个方法。咱们把它加上,然后这个加上之后,后面咱加上一个叫做handle了。啊,咱后面再完善,我先把结构写出来,比如我现在讲解,然后看到后面我们加上就是两个分号,再加上你要执行里边的具体方法,因为咱这行是这个get白地,或者说这个get o,所以咱们下面把这方法加上,咱就加这个get白地是它这个具体的方法,所以现在我们就完成了里边一个最基本的这么一个结构啊,就这么一个结构,然后结构我们再看一遍啊,最后咱再慢慢完善。
08:08
所以现在呢,咱把这结构就做到了,在里边咱把错误给它解决一下啊,首先return routeal function啊,应该加个S啊,Ual functions就这可以不加,是默认一个方法,或者你把这去掉,这加个rootr就可以了啊,咱给它加上就完整点,然后在里边我们现在这位置中,我们就是直接先设置你请求的路径,因为咱用get提交路径,我叫user乘ID,后面设置你接收什么类型的格式的数据,包括你要调哈中的一个方法,因为咱调的是这个get user白地。就是根据ID传业方向盘,所以这是一个基本结构,包括这个位置还有一个错误,咱们把这个。解决一下啊,然后里边我们引入这么一个。方法啊,那我们看一下啊,呃,这好像导的包不对啊,给他换一个包啊。
09:01
重新换一下,这个应该是导这个media type里边的,然后这个叫accept也是里边一个。静态的方法啊,咱们可以直接使用,所以现在我们这么做,就完成一个路由创建,根据这个路径就能去请用到他中的get user摆地的方法,这个我们就做到了,然后做到之后在里边还有一个方法,就还有几个方法,咱们可以继续往下写,比如我们现在再写一下,咱大家下一个方法,那下一个方法怎么做,在里边咱可以直接用这个链式编程,我们来一个点上一个叫A的。就点上一个方法,把它加上这些方法,我们叫这个,就这个and root啊bread啊and root,然后在里边还是写上面这个结构,比如咱们再换一个,比如现在我做这个查所有,那比如说咱还是来一个。Get提交,在里边加上我们的路径给这些路径,我就叫users啊,这是路径,然后加上路径之后,在后面咱也是加上一个,点上一个and and里边加一个叫accept accept中加上你那个返回支持那种类型,咱用的也是这个。
10:17
然后加上之后,咱们后面它还有下一个参数,这参数就是这个handle了,加上里边的具体方法,这方法就是get o users,所以这样的话,咱们现在把里边的第二个给写出来了,然后通过它来完成我们这个具体操作啊,这个啊,我们也是做了这么一个基本的一个编写啊,然后这里边应该括号位置不对啊,稍微改一下。这里边。这个啊,我们做了这么一个基本说明,就是把这个我们给他就做到了啊。然后做到之后咱发现啊,这里边有个错误,他说不能解析这个方法,大家看什么错误啊,咱回到方法中,名字肯定没写错,但是大家发现啊,我上面两个方法里边是不是都有一个参数叫server request,而现在在这里边虽然咱不需要参数,但是这个也需要写出来,叫server request子,如果你不写的话,就是报刚才这个错误,你看现在就没问题了,所以咱们把这个路由就串出来了,在里边做法就是首先咱们先创建这个。
11:25
Handle了一个对象。然后第二步就是。设置你那个路由的那个一个部分,包括请求地址接收的类型,包括你要调那个方法,这样的话,咱们把这个路由就做创建,里边就是这么一个代码,各位把这给到知道。然后把这个写一下哈。创建路由的这么一个方法,就是咱们刚才写的这么一个方法,这方法在我们操作中就是用到,然后用到里面那个路径,包括提交方式,请用我们的具体方法,就刚才图上画的这部分这个啊,我们就做完了,然后这个做完之后,咱下面继续往下来做,那下面做什么,大家看这里边啊。
12:09
大家看咱下面做的话,我们是不是要。做这种适配呀,包括是不是要用这个服务器启动做操作,就咱下面就写一个启动服务器的这个方法,包括里边做这个适配,让你的路由执行你这个哈中等具体方法,那咱们来写一下啊,就是我们的下一个操作。创建服务。完成这个适配。那怎么做,咱来写一下啊,就是这个里边,比如现在我在里边,咱们在创建一个方法,创建服务器。完成。适配,那这个方法,比如来一个public,不就写一个wait这个方法起个名字,比咱要创建服务吗?比如叫create。这个咱们叫reactor server。
13:04
这个啊,我们写的方法,然后在方法里边,咱们把服务先做个创建,那创建之前首先咱先完成这个路由和handle,它里面那个适配,就让他做到这种适配过程,那怎么做?第一部分咱们现在先调下这个方法,这个routineings rooting function,就刚才我们写那个路由方法。然后这个方法返回的就是这个UR。方式啊,这是我们的第一部分,比如说起个名字叫这个。头。这是一个路由,然后路由洗完之后咱做适配,那怎么做适配呢?在我们这里边啊,有一个方法叫to。HTTP。看到了。就是它里边有很多静态方法,然后在里边咱就传入这个叫root的这么一个。对象,最终它有一个返回值,我把这依赖先给它引入。
14:02
啊,最终的一个返回值,而返回值就是这个叫htp handle,通过它完成里边这个就是htp handle创建这单刚才提到过,它里面就做这个HP请求,里边存储一些相关的请求的一些信息,然后这个做到之后,下面咱做最终的适配,那怎么做呢?在里边咱们六个对象,这个对象叫reactor。HTTP这个叫handle和de。A。BC用这个对象,然后做个操作包,在里边传入咱们这个htp handle,因为这个里边有咱们的路由啊,这个啊我们就做到了,然后做到之后它返回的就是咱们那个适配器这么一个对象,这样的话我们就完成一个适配,就是现在咱们把图上的这个过程做到了,你看这写法中啊,就是咱们先用这个路由对象得到,然后里边new一个htp handle的里边用这个路由,最终用适配器完成里边这个基本过程,这个啊完成,然后完成之后,下面咱就把那个服务器做创建。
15:13
那服务器怎么放电?有个类叫htp server,这个类比如我们叫htp server,等于就是HTP。上网。里边有个方法,这方法叫create,这样的话创建P服务,然后咱们把它的依赖引入react里边这个依赖,然后创建之后咱在里边用这个AP server。Server里面有一个方法叫handle,在handle中咱把这示配器给它穿进去,再调一个方法叫这个build no就是。现在进行构建,这样的话,它这里边一执行就可以启动服务器,然后完成这个适配,完成适配之后,咱们通过这个路径就能访问到我们那个汉德尔中的具体方法,所以现在把这个我们就做到了啊,这就是完成适配创建武器,咱们是这么一个方法啊,这是咱们的。
16:13
第二个方法,然后把这方法给各位复制过来啊,都是一些比较固定的写法,各位写的话呢,你第一次写一遍,后面再写的话,直接复制改就可以了,因为写法比较固定,但是你要知道里面这些过程到底都是做什么的。然后这些都完成之后,咱们最终就开始做这个调用了,然后把过程最终做实现,就是最终的这个调用。那调用的话呢,咱就是在里边呢,我们就写一个问方法。完这个过程啊,那问方法里边,首先咱先new这个server这么一个。对项,然后另外之后调用serve里边这个方法,这方就是咱刚才写那个叫可reactor server,把咱的服务给它做这么一个启动啊,包括里边我可以做一个,比如做一个输出吧,比如我们现在提示他说你这个点这个回车键是为了这个退出啊,一般我们经常看到这句话,包括最后我们加一个这个。
17:15
System点上音,点上这个。Read。给他做一个那个退出。这样的话,咱们把这个结构完成了啊,里面有异常,给来一个这个Rose。Exception这个我们就完成了这种调用啊,这么一个写法,就让方法执行就可以了。写完了啊,然后写完之后呢,咱把过程再看一遍,最终咱来做个测试,就是过程中咱就看我这张图上咱要写几个地方,第一个handle的具体方法,咱刚才在handle里边写上了里边的这几个方法,第二个写一个路由,在里边我加了一个路由方法,只用路径包你执行的方法,然后第三部分咱做这个适配,让你路由直行你句的方法,这叫适配,最后创建服务器完这个过程,这样的话咱把它就最终做到了,这是咱们写的这么一个。
18:10
服务器的类啊,里边完成了路由适配和服务器的创建,然后这些都做到之后,咱们最终来做一个测试,看一下它最终的效果什么样的,最后测试一下啊,现在我把这个server类里边的main方法,咱们给他做一个执行。咱们执行一下啊。然后咱们等他定出来。因为我现在没有顶端口号,现在一个C端口号叫做5641,那我现在通过5641,而里边的路径就能访问到W具体数据,那比如现在我对他访一下。咱们记住啊,叫5641,那我来访问啊,比如里边我加一个5641,然后这个里边的路径我叫user,我加个E回车。
19:03
大家看。数据是有了。比如来一个三。会出。是没有问题,比如现在我再加一个叫users。回车是不是你的所有数据,所以咱证明我现在这过程是不是就出来了,咱们把服务器启动了,然后通过它里面这个端口号进行访问,然后把数据最终咱是不是也都得到了,这样的话,咱就完成了里边这么一个基本过程啊,这就是基于这个函数式编程模型,把这过程我们就最终做了一个实现。所以各位把这过程给他好好去看一看,你主要理解里边我们要写哪些东西,因为这种方式跟注解方式就完全不一样,包括他写的过程中很多写法跟之前有很大区别,所以把这些好给他去看一看,这样的话咱就把这个函数式编程模型完成web把个操作给各位做了这么一个演示。
我来说两句