00:00
好,那我们现在呢,先来呃,建一个SMS service这样的一个接口。在SMS这个里面呢,我们建一个包,然后在这个service包下面呢。我们建一个接口好,然后呢,在这个接口里面呢,我们写一个接口方法就它了。啊,因为我们发短信的时候呢,需要手机号对吧?啊需要模板啊,模板呢,就是模板里面的那个参数啊,啊在在在这个地方传,然后这块呢,是那个模板的编号啊,就是你要发的是哪个短信,因为我们有可能发根据不同的模板发不同的短信,然后不同的模板里面呢,会有不同的参数,所以呢,我们把模板参数以及所对应的手机号都是作为变量定义在这个地方,好然后接下来呢,我们生成这个。
01:00
实现,所以呢,I'm CL。然后接下来呢,我们右键6I'M。PL好,然后这面呢,我们MS这样哈。然后这面呢,我们就写service。好,然后呢,我们把它实现出来。然后接下来呢,我们在呃这里面呢,就可以写具体的短信发送的一个过程了。不止这一段。这样啊。好,然后呢,进行一些改造。然后呢,在这里面呢,我们把这些都用咱们前面定义的啊,这个常量的给它替换一下,所以这个是default。
02:11
Default,嗯,应该是那个啥,SMS SMS properties,然后点region ID啊,这是第一个。然后接下来呢,是第二个参数,这是第三个参数,第二参数我们也换一下。叫做smsties啊,然后点PID啊,这个也是一样的,SMS properties.script哈,这是这啊三个,然后接下来呢,这面呢,我们写client啊呃,Default ACS client,好这个就创建出来了,然后下面一个步骤呢,就是创建远程连接的各项请求参数,好然后这面呢,我们先创建一个request对象,然后呢,它的请求的方式呢是POS方式,因为它的底层实际上就是HTTP,所以呢,我们在这地方用POS方式,你像这些东西你都千万不要改,就用它默认的这个就可以了啊,这个呢就是远程服务器的地址,这个呢是我们这个API的版本号啊,然后这个呢是啊。
03:29
你当前这个远程请求要做什么,我们这个当前远程请求呢,要做的是发送短信的功能啊,然后再接下来呢,这块呢,是我们的region ID,那这个ID也可以用它来替换一下。好这块呢,是你的电话号码,这个电话号码上面这个mobile来替换一下。然后这块呢,是你的sign s呢,我们用这个。我们的配置来替换一下,好,然后这块呢,是你的time的扣,他扣呢,我们用这个变量来替换一下。
04:04
好,然后这块呢,是你的template permeter template permeter呢,它需要的是一个Jason字符串,然后我们呢,是未来会从这个啊调用的位置呢,去传一个建筑对的一个map集合进来,所以呢,这边呢,我们需要将这个map集合呢转换成Jason啊,Jason的话大家就用自己习惯的这son处理工具就行了,我这面呢喜欢用谷歌的Jason,好,然后呢,这面呢,我们就用Jason来转一下,所以jason.to Jason,然后呢,把这个perter传进来,得到一个Jason字符串啊好,然后接下来呢,我们把这个jasontimeter呢就传到这个位置就可以了。好,那这块呢,就是我们的Jason啊的这个字符串的一个生成,以及把这个Jason字符串呢,放到我们的请求参数当中的一个过程,对吧,这是整个这一句话的一个目的啊,好,得到响应结果之后呢,后面这个位置它呢,就打印出了这个响应当中获取到的这个响应数据啊,一会我们可以看一下啊,获得响应数据是什么,然后在这个位置就。
05:17
就这样哈,Server exception啊这样的话呢,我们就把它的这个异常呢,给它捕获了一下,那补货异常的时候呢,它是直接打印了异常跟踪站,那我们呢,就是希望呢,除了打印异常跟踪站之后呢,嗯,因为异常跟踪站这个吧,你看一下啊,点进去它是在系统的控制台上的错误信息里面打印出来的,也就是说这种表示的是异常跟踪站的,呃,输出位置,它的输出位置就是控制台,它并没有打印在我们的日志当中,那未来呢,一旦这个系统上线运行了之后,出现问题了,我们是希望它出现问题了之后,相关的问题是打印在日志当中的,所以呢,这个地方呢,我们就不能用这种方式去打印错误信息啊,得用咱们自己的方式,咱们自己的方式是什么呢?就是log点2A啊,然后我得把log定义出来啊。
06:14
好,然后所以呢,这面咱们自己的方式呢,就是log.error啊,这是请求参数,然后这是返回数据,返回数据这有示例,示例这块有正常的返回示例,我们看Jason格式的,Jason格式的正常返回示例呢,是这样的啊,然后呢,如果是错误错误返回事例的话呢,一会儿我们可以啊去呃,根据它的那个实际的啊,这个错误的返回信息,咱们就可以看到,它里面有什么呢?就有这个errorrow code的啊,这个是错误嘛,然后接下来呢,还有什么呢?还有这个error message。叫1.geterrormessage,这个是他的错误信息啊。
07:05
我们都可以通过这种形式呢,给它拿到,然后里面它嗯我嗯我想啊,不是这个干马写get I绒马写对是这个好,这块呢,我们都可以拿到它的这个呃,错误码,错误信息等等一些内容,然后有助于我们的调试,当然了这面啊,一旦这面就是发生呃相关的异常之后呢,我们也希望呢,在我们的这个。平台当中呢,给前端返回一个必要的信息,所以这块我们可以写一个new啊,这个是给前端返回的错误business exception,那我们怎么样去打印这个跟踪站的,而且原来这个跟踪站我也说过了,你不能直接用,为什么?因为这个里面是打印在控制台上的,真正发生错误了,它不会打印在我们的这个日志当中哈,就是呃,日志文件日志当中,那它应用不了这个我们的log配置啊,就这句话,那怎么才能让这个错误跟踪站的打印能应用了BY配呢?在这个地方,这个business exception呢,咱们曾经写过一个重载的方法,还传递一个E对象,就是呢,把原始的这个错误对象呢给它传进来,传进来之后呢,在这个business except这个地方呢,我们调用它的这个super方法,调用super的时候呢,它就把这个原始的错误对象呢,就传递给了super了,这样的话,整个的这个business exception对象,它实际上就是带有错误跟踪站的信息的这么一个对象,因为你。
08:32
已经把原始的错误又传递给了这个新的错误对象,对吧,新的错误对象呢,就封装了原始错误对象里面的这个错误跟踪站信息啊好这样的话呢,我们在呃,这个返回的时候,大家还记得吧,只要在我们的应用程序当中返回,它一律都走,什么都走我们的统一异常处理,所以在我们的统一异常处理这块应该是这个位置吧。在这个unified exception这个地方,刚才我们抛出的那个异常呢,它走的这个,呃,Business exception这个处理器对吧?好在这个处理器当中呢,这个位置就打印了错误跟踪站啊,所以这块呢是打印错误跟踪站的地方,因为这个地方呢,把E堆项传到这个errorrow里面去了,而arrow它这个方法通过这个形式就可以把完整的错误信息打印出来,所以这样的话呢,啊,其实大家会发现我们在编写程序的过程当中呢,你不但要去考虑到正确的这个流程怎么写,你有的时候呢,还要去考虑考虑失败的情况,怎么去更合理的去处理啊,所以说这块呢,是我们失败的一个情况,然后下面这个地方也是一样的。
09:39
差不多啊。好。他俩的代码几乎是完全一样的,但是实际上补货的这个易对象呢,它是有区别的是吧?啊是这样的,那这块呢,是我们整个根据我们当前的这个业务写的一个流程,好我们先来看一看啊。
10:05
在这个就是在目前为止的这种场景下,我们怎么样去做一个测试啊,当然这个这个嗯,思维方法我还没有写完,还要继续写,但是呢,写到这之后呢,我觉得是非常有必要给大家做一个测试了,所以呢,咱们现在来做一个测试,那怎么做测试呢?那肯定是得先创建一个cler,用controller调用这个service,然后再来做这个测试。
我来说两句