00:00
嗯,Hello,大家好,然后我们今天呃,继续给大家分享那个Mo API的respond。呃,内容的一个封装啊,上次分享那个request的时候啊,啊录屏软件出了点问题,后面的一些实战内容啊,没有录上,然后就讲了讲框架,然后就断掉了。啊,这这个嗯,准备在在第三次分享的时候,单独录一期实践,嗯实践的吧,然后本期的话,主要内容也是对那个的这个框架的一些。呃,封装还有一些方法,点错点错点错项目了,哎呀,尴尬。OK,我们看一下。某apson。
01:00
嗯,所以呢,这个。嗯,有一些,嗯,它跟那个request有些不太相同的,就是它嗯自己拓展的方法会多一点,然后呃拓展的内容就是在这个呃这个里面了。然后待会儿我们讲到具体的信息的话,我们看一下它是怎么实现那个呃方法的。啊,首先呢,我们那个某回学使用的方法使用的,呃,那个规范就是前面是一个啊,关于request的一个匹配,呃,如果匹配成功的话,就会返回后面的response这样的一个格式,呃可以给大家先看一眼。啊,就是这种的。嗯,这个就是我上次写的,但是没录上的内容,然后是get。然后post,然后还有或者post,然后这种,呃,然后前面是那个要对URL的表达式哦,然后啊,这有一个对。
02:05
那个URL和参数的一个表达式啊,然后呃,后面就是一个response,就是响应什么内容的这个。然后呢,想要的内容呢,一般就分,嗯,正常来说啊,呃,一般就是那个text。这种文本形式的。嗯,然后呃,至于返回文件的话,那个嗯,我之前给大家分享,呃呃,分享过一个类的。呃,API里面的,呃那个类。啊,在这儿呢。这里面有一个比较好的,呃,他们弄好的,但是呃这个的,呃,但是我个人就是实际,嗯,实际工作中。几乎用不到Mo,呃呃,File的这个功能,所以基本上就是对接口响应数据就就是绝大部分就是杰森,嗯,就这样一个模拟啊,所以说呢,呃,这里面我就没有封装啊,如果大家有需要的话,就就看这个。
03:14
呃,Get,呃,Come getu dream head Mo,还有这个Mo这个类里面它的静态方法就可以了,它有一个专门的呃返回这个的啊,包括呃重定项或者说代理这种啊都是可以的啊,包括是有一个。呃,文件的一个映射,呃,这个也是可以的,呃,是在哦,我看一眼,我这个是写过一些DEMO的。嗯,大家看这个就是这个好像是呃,Linux里面挂载什么的啊,我我我理解就是映射了哈,就是把这个一个地址接口访问的地址映射到那个一个,呃。嗯,当前机器的一个目录啊,是这样的。
04:03
呃,就是可以把这个目录下面的静态文件啊,可以全都按照一定的规则,然后全都就是可直接可访问了,那前提就是这个文件路径你得呃当前启动的那个用户得有访问权限,这种是呃重定向的某个文件,呃某个某个,这是重对象的某个地址。然后大来大家看这个地址,如果再再他是请求这个相当于首页吧,呃不是首页就是根目录吧,然后那个路径,然后就重定向,这个重定向到这个地址,如果重定向到这个地址,我们就它就会重定向,不是重定向就是把它呃转到这个。访问根,呃,根目录下blog这个下面这个home atml这个文件啊,是达到一个这样的一个功能,然后之前是写过一个静态博客啊,就是利用了这个方法,呃,大家看这里面就是没有用到这direct to这个也是。
05:05
嗯,猫这个它本身自己框架提供的一个不错的方法。嗯,包括这个也是他们本身自己提供的,我觉得呃对于测试来讲就是呃用到的比较少啊。所以说这里我就没有在。在那个封装这个response的话就没有法。嗯,就没有去做这方面的封装啊。OK,我们继续讲这个第一个。嗯,就是呃,String啊,String数据的返回,呃这个比较简单,就是就直接就返回固定的内容,这string数据。OK,嗯,还有一个就是。嗯嗯,我们看一下吧,嗯。嗯,DEMO的话,大家看这个,嗯,有一个,嗯,如果是这就在这个地方吧,比如说它,呃这个这个的话,我们如果把它改成。
06:07
这种形式的get。呃,如果改成这种形式的话,就是我们会随机的返回一个,呃,323的一个数字,但是这个数字一旦随机成功之后,它就会不会变了,比如说我们随机到100,它就每次都返回100。这代码不是说每次都会执行一下这个,呃,给这个这个re的,它就是就随机到100,它下次过来还是100,相当于一个代码执行完,相当于弄了一个映射列表一样,就相当于呃,它那个就已经写死了。OK。呃,我们这个我还得把它还回来。嗯,这是一个点,呃,如果想回话,回复随机内容的话,我们后面有专门的一个啊方法,嗯,这是返回接的。
07:06
呃,这个这个没什么,没什么太多的太多的就是呃。呃,如果我们其实我们看这个想返回接线也是返回的一个string。字符串,包括后面的object也是返回了一个string字符串是这样的,是这个样子的,所以说我们看一下位置这个方法。物语这个方法就是只有呃一个。呃,大家看这个mountain这个这个我也不太不太了解啊,就是一个resource,呃,其实我们呃用这个test里面封装之后,也是一个resource的一个形式。嗯,然后我们看一下它的代码位置,这前转的resource嘛,其实掉的还是这个方法啊这类方法,这个方法是调的什么呢。就是海啊,是这个啊这个的,然后这个呢。
08:00
你看这个它也是这个produce hand其实也是这也是这个,其实最关键的就是这个类啊,但是啊用了,呃,我们去先写,先去写一个这个类会比较麻烦,所以说我就统一采用了with text的这个string,呃,返回string的方法啊,做了一个封装吧,然后这是返回对象,嗯,对。呃,对象的话,嗯,理解起来也比较简单,就是说。呃,在像我们在做服务端测试的时候,一般它都会有一个呃,每个项目都会有一个固定的返回呃格式。格式的话就是有一个对象来实现的啊,这个对象呢啊,不管怎么起名字嘛,它就是一个Java b的形式,然后我们就是这个返回object。嗯,这个我简写了这嗯呃,后面会考虑考虑把这些名称都统一掉,因为有时候时候自己写着写着自己都忘了。
09:04
然后。嗯,Succeed,嗯就是返回一个成功的对象,嗯,这个相当这个主要给大家看一下吧,嗯,就是比呃呃相比相对来说比较简单的它的一个呃响应的一个格式的话就是code,然后加那个data data,呃然后呢。呃,我们看一下啊。嗯。就是有一个构造方法。是这样的,大家就当加法看,就当加法看,这个可以可没问题的,然后这result,然后返回具体内容的话啊,就是如果返回具体内容的话,我就默认它是成功的,因为它succeed这是成功的啊,然后。啊,这个是它的构造默认的一个构造方法,然后通用失败的的一个for的内容,嗯,通用的失败的话就是这个,然后我没有去做那个。
10:01
啊,其他的那个静态方法的话,那不是其他的一个静态方法的。呃,一个封装原因是因为呃像在项目,呃像开发他们写项目的话,一般都不这个,都是直接去调用这个。啊,或者说是调用一个,呃,正确的话基本就一个方法,就像我封装的一个这样的方法,但是错误的话,他们一般都会调,呃,调这么一个方法。嗯,找他的构造方法,然后呃code的话,它也会做成那种枚举的形式,然后这个data的话,一般呃这一般不会用,呃也不好说吧,有的会用翻型,有的不不用翻型,也是一个data的话,也是一个错误的一个,呃信息的话也是有那个具体格式的,呃一般来说呃会把它result。做成。嗯,一个枚举的形式就是说,呃,错误为一的时候,就是服务器异常,然后data里面就是。
11:06
呃,有异常也可以包括异常信息也可以不包括,只是呃,就基本就是简单的提一下,就是文字性的。啊service error这样的二的话可能就是。嗯,参数错误,觉得parents啊什么。嗯,密室和丢失或者说是错误啊,这种的话啊,所以说这个只是一个坐车试用的,但是不太适合去,呃,跟不跟实际项目还是有一些啊比较大的区别的,OK,我们回到上面这个类。嗯。点多了啊,这是两个比较简单的方法的一个to string啊是这样的,这个string的话,大家看这个方法。嗯,这个方法是也是自己封装的一个方法啊,这个呃,大家看一下就行了啊,稍等我要接一个电话。
12:07
啊,OK,我们继续开始啊,刚才接了个维修电话。嗯,然后我们这个是可以恢复一个。呃,那个一个对象啊,有一个固定的回复的格式啊,这个大概就做装样子,然后又要跟跟,主要是要跟我们那个呃实际项目中的呃那个呃返回的对象那种格式要匹配,这个只是呃自己的一个。小小的实践吧。然后后面就是带有一些功能性的。诶。嗯,Random嗯,哎,我靠,这个好像写错了。怎么还多了个W?
13:03
嗯,这个是随机的,嗯,这个随机就是说从呃后面的几个焊带里面随机去挑选一个啊为什么要用做成这种呃一个hand带,然后加上一个数组hand带呢?呃主要是因为呃那这个原种方法就是这么这么做的啊这个。呃,怎么说呢,就是抄别人代码格式就超一样的,然后我觉得我试了一下就效果还是就是比较符合预期的,然后我就呃,包括后面的所有的我都是按照这么一个统一的一个格式,就传一个黑的,然后后面传一个啊数组啊这样返回的。嗯。这个也是circle,呃,这个嗯,这个random和这个呃circle的区别在于哪呢?就是说呃circle的话就是这几个里面啊,我会把它呃全部的呃从一二,比如说这有三个呃,那个呃string吧,就第一个,第二个,第三个完了之后还是第一个第二个第三个,这样是一个循环的,是这样的。
14:13
嗯,然后呢。嗯,这个呢,大家看一下它它的它这个对象是那个呃,Hander,然后我们看我们前面的方法。呃,全部返回了,都是这个hand,所以说这个方法是可以,呃不用去做,呃过多的对象的列举是这样的,OK,然后嗯,这个circle呢,它就是还我还是用的那个。呃,就是呃他呃看大家看一下这个circle。啊,这生好像也是我自己碰装的,这好惨,就是用了它那个strange的,全都用strange。嗯,然后。返回文。哦,这个这个汉字的注释好像写的文本。
15:03
好像是有些问题啊,然后这个是返回杰森。OK,然后这个地方用了一个。呃,Java应该是没有这种操作的,但是类似啊,就是把这个数轴转换成例的,然后再用这个string方法啊不,String方法,呃语法,然后把它弄成一个,呃把Jason的数组,呃把Jason list转化成一个string list,然后再将它转化成一个数组,然后呃,这里面加了一个。呃,时均宿主的强制转换,这是为了加一层保险吧,嗯,这样。然后这个里面就是这个是一样的。这个地方我也不知道当时为什么我会要我会对这些进行一些封装,可能呃。
16:02
呃,可能这个用的会比较多,然后这个JA呃接呃格式的去转来转去会比较麻烦,大概是这样的,也是大概是这样的吧,这个好像是有点乱,呃然后我们看呃下面这一个,嗯,随机返回文本,但是会停留在最后一个文本内容,嗯,这个就是那个。呃,那个那个那个啥来着。就是那个某那个类提供的一个静态的一个功能,完了之后,嗯,他的就是呃,那个contact就是两个,这也是就是你的一个呃数组,然后去返回这个的,这个没什么太多可讲的呀,就是把这个接省一样,就是把这个JA省的话,也会把这个阶省都返回回来,是这样的,然后。嗯,这个也是seq。嗯,然后这个用的比较少,当时呃用的比较少,因为很少有业务说,呃,我有几个返回值,然后第一次比如说五个返回值,1234,完了之后所有的请求过来都是五,呃呃在工作中很少遇到。
17:14
呃,一般我能想到的就是比较基础的一些,就是那个卖票的那个模式。比如说我有十张票。呃,然后前十章,呃,就是OK的。嗯,就是都可以卖的,然后到第11次请求过来的时候,就是啊否就是没有票了,就是这种这种请求这种情况操作的话啊,会遇到这样的啊,是这样啊然后呢。这是一个set cookie。呃,大家看这个set cookies也是一个就是帮带,所以说我们这个前面可以有一很多就是帮翻带的地方。嗯。呃,这个是可以,我想一想,我看一下啊。Random hand。
18:03
嗯,像这种circle这种都是很多的,然后我看一眼cookie这个是可以就是嗯跟嗯就是般之后会可以设置很多很很多个,呃,Cookie或者是header是这样的,呃这个比较也是那个猫自己提供的类。然后这个是自己做了一点封装,就是说我设置很多个开是这样的,然后这个是设置ADP状态码。然后。这个设置代理URL啊这样的,这个用的也比较少啊,很少很少,然后呃设置一个得类啊,这个延迟的这个功能,呃会比较有用一点吧,呃因为它返回是很快的,就相当于呃返回一个静态的东西一样就比较快,然后我们接口要做一些,呃想要延迟,比如说呃做一些比如说接口请求十秒之后才会有,或者两秒之后才返回,这样的话我们会做一个得类的延迟操作,呃它的嗯这个是传单的,这第一个参数就是长,呃长度吧,第二个参数就是单位。
19:15
嗯,这里我默认的是一个毫秒。啊,这个也是随机的啊,这个是随机的一个自己基础的一个封装,封装方法,然后包括这个地方也是。OK,然后。嗯,其实这两个地方不应该写在这儿,应该写在它那个,嗯,这个circle和这个random里面类里面,嗯,待会给大家看一下它是怎么实现。呃,这个也是返回的一个烧口。Circle。Bicyclecycle circle啊,它就是一个循环的意思。啊,然后。嗯,重点是还有一个是这个。呃,As啊,不是limit limit就是访问,就是时间间隔受限的,是这种形式的,嗯,基本就几种方法的封装啊,杰和啊是这样的,然后呢。
20:10
呃,我们去。呃,然后有一个受限,有一个不受限,这里面多了一个。呃,默认了一个一百一一千毫秒的访问限制,然后这里面这一个方法是多了很多,呃,多了一个参数就是做这个。呃呃,这个这个访问间隔做了一个参数化啊,是这样的。然后嗯,给大家看一下这个,呃,萨克那跟那个呃这个其实他们都一样的,然后我们看一下这个呃,Circle吧,Circle我觉得。啊在这,嗯,Circleq呢,这些都是可以说这些都是基本就是一致的,然后这index就是不一致的,然后最终实现了那个静态方法就是这个啊是这样的,然后。
21:06
嗯,这是,嗯,我给大家看,呃,这个东西内容好多,呃,大家看一下这个就这个这这个方法,它是先去检查了一下这个参数啊,是不是OK的,就是是不是OK的,然后我们会返回一个,呃。这个构造方法导致的,这个构造方法呢,它其实就是一个。这个COPY2是那个Java自带的,呃,一个拷贝,我也没太深究它是深拷贝还是浅拷贝,然后把这个拷贝过来,然后完了,然后具体用的时候就是这个right to respond。呃,这个是每次都会执行的,呃,并不像我们之前写死的那种静态的。啊,不是我们之前写死的那种,呃。单一的就是string返回string这种,这种我是做了一个什么操作呢?就是那个inex,呃加加,然后呃,对那个handle set取鱼这样的啊,然后他每一次每请求一次我就加一次,每因为每请求一次我就加一次,然后这样就达到一个深后的一个目的啊,是这样的,然后呃,这里并没有去做那个线程安全的这块的一个操作啊这样,然后原因就是因为啊一般不涉及到线程多线程请求的,而且只是达到一个这样的一个目的,又不是有一个比较精确的,必必须说啊多少次请求,呃是多少个只达到一个,呃每次都能循环的请求,就这么一个目的,然后后面这些。
22:37
啊,都是抄的。嗯,是那个就是需要继承的那些方法都都是呃从这个呃这个虚拟类里面继承过来的,然后这个呢。大家看这个方法。A。I play这个里面,嗯,就是你看这个as for这个这个request这体,我也就是fair URL这个快就这这几种。
23:07
然后然后去进行这个super操作这个,呃,操作这个呢,完了之后这个就是把这个,呃,这个form也是那个门口里面的一个类,呃不一个静态方法,我我印象中是一个静态方法,然后弄完之后,然后再返回这个,然后它这个方法是怎么做的嘞,还有这个。啊,这个就是呃,其实呃所有的这个配置,就像我们的request的配置,水泵配置的都会呃从这个类里面继承,它应该是把呃有呃怎么说呢,就是有点像嗯整体呃整个server的一个配置配置的吧,那它就会实现一个。配方法,然后就会把这个啊弄到这个那个那个这个那个什么,这个叫什么来着,嗯,Input,然后弄的配加,把这个配置加到这个server里面啊,我理解的是它实现这么一个功能,但是没太深究啊,它后面都是一个超的。
24:12
这是一个random。嗯,Random也是一样的,嗯嗯,这后面跟那个是一模一样的,OK,然后这个是就是呃,随机的一个。呃,Int类型的,然后去write to啊是这样的。就写到那个学报里面,这样就达到一个呃将嗯。呃,将几个响应随机的返回给请求啊,是这样。然后限制呢,限制那个主要就稍微复杂1.1点点吧,而且这个我也没有做那个线程安全的处理,然后呃,我。嗯,在上期漏漏掉的视频里面,我是看到了一个。
25:01
呃,大概的一个,呃实验了一下,就是说它这个是对所有的线程都是一样,就是一秒钟之呃,我比如说间隔设一秒,一秒钟之内所有的都是一样的,都过都呃如果被限的话,数一秒钟之内所有的都是被限的,嗯,这个我单独自己测试了一下,速度还是可以的。嗯,这种的话。呃,大家就是呃限制的是否呃limited啊,这个就是判断一下受限嘛,判断,然后去呃写到这个contact里面。大家都是对这个session contact进行一个操作啊,是这样的,然后这里面我是啊,OK,这里面我是对哦,这原来是我自己写的,就是对他的URLURL加这个,呃,内容进行一个。
26:00
呃,内容进行一个一个怎么说呢。就是。呃,限制,呃呃,以它为依据进行限制吧,就是比如说我一个URL。呃,因为我们有那个正常的在这里面,呃会匹配到一个会不是说全量匹配的,比如说我们对正则匹配这些UR,所以就有可能我们导致一个一个request的一个一个呃匹配会匹配到很多个URL,但我这个limited是对针对于每一个URL,这个contact为什么可以加呢?我也很纳闷。这个地方自己写的,可能有点懵逼了。这个。对的,应该是个。OK,你大家看我这是一个。哎呀。
27:01
啊,年少轻狂,年少轻狂写错了,好多贫血。呃,是对一个total这么一个,它是有一个呃new坑的map的这个是一个那个啥来着,呃,线程安全的,呃这个是没问题的,然后这里面会对这个URL加这个contact contact我感觉呃。应该是没有用的,因为这个加我不知道他为什么不报错。嗯,我们就直接把它的。先不管它了,回头再试的时候再弄,OK,然后今天的respond啊,就讲到这里了啊,然后。呃,这个大家可以去getate上自己去看一下用,用处还是比较多的啊OK啊,忘了放二维码了啊,赶紧把屏幕改成二维码。
28:03
呃,今天就到这里了,欢迎大家关注公众号啊,我们下期再见,下期大家就会讲一些呃,某API的直接的一些实践内容了啊。拜拜,下期见。
我来说两句