00:00
好,刚才呢,我们教练手机号注册的功能呢,已经开发完成了,那接下来我们要做的事情呢,就是在这个位置哈,刚才在这个位置开发了一个接口,那接下来我们要做就是在SMS这个短信发送这个模块当中去调用这个service靠啊,核心模块当中的校验功能,那么所以呢,我们要在SMS当中的引入啊open phone的依赖,因为我们要用open phone呢做一个远程调用,那么为了后期我们这个服务和服务之间的远程调用啊,因为不单单只是SMS调用靠对吧,有可能oss也调用其他的,靠也调用其他的,所以呢,为了方便我们就直接把这个依赖呢添加还是添加到service base当中啊,但是实际上大家要知道的就是目前为止我们这个需求,它是服务的消费者。Service call是服务的提供者对吧,生产者,那么我们这个open份这个依赖要添加在服务的消费者端啊,但是未来我们可能每一个微服务都会成为服务的消费者,所以呢,那我们就添加在Tom的XL当中,那么我们添加的依赖呢,就是这个依赖了,服务调用依赖,好,我们在当中呢,把它刷新一下。
01:19
这是第一个步骤,第二个步骤呢,我们需要在服务的消费者端添加一个注解,叫做enable。好,我们找到服务的消费者SMS。那我们在它的启动类上添加这个注解。好,这个注解添加完成了,那这样的话呢,SMS作为一个服务的消费者端,作为一个啊远程调用的客户端,他就可以去调用car了,所以针对于SMS来说,Car呢就是服务器,SMS就是客户端了,对不对,所以这面呢,我们就写的是enable phone class啊消费者调用服务器,好,然后接下来呢,我们呃,在SMS当中呢,就创建我们的远程。
02:14
调用啊组件了,那么这里面呢,我们,嗯,就是反正不同的开发人员方式各不同吧,我这面呢,就是习惯于给他写一个叫client的包,叫客户端包,一看到这个包就这里面封装的都是远程调用的一些方法,然后接下来呢,在这个包当中呢,我们创建一个接口啊,然后这个接口呢,就代表着你远程的调用的一个客户端,比如说现在我呢,这个接口呢,就要调用远程的service call里面的user in for这个啊接口里面的一些方法,那我呢,就在这个地方写call user in for client啊。啊这样写,然后接下来呢,啊,因为它呢,就代表着远程的一个调用的一个客户端,那我们在这里面远程调用客户端呢,就是phone client,那你代表的是哪一个远程的服务器呢?啊,通过这个微服务的名字,我们可以指定我代表的是远程的service卡,所以说呢,当前这个客户端就会帮助我们去。
03:20
和service call这个微服务建立连接,那么service call这个名字是哪来的呢?是不是在我们的resources里面这个地方,我们给这个微服务起的名字呀,叫他啊把这个名字呢,拿回来一定要保持一致好,那接下来呢,我们在这面呢,就写一个接口,这个接口啊就帮助我们去能够调用我们在靠里面的刚刚写的那个接口,那我们在靠里刚刚写的那个接口在哪呢?在这个位置。校验手机号是否注册是吧,我们把它呢直接复制过来,复制过来之后呢,我们找到刚才我们的。Client下面的啊,User in for client,我们把这个接口呢,原样复制过来就可以了,这个其实就是代替了,或者是说相当于远程的接口的一个一个代理接口一样啊,那么我们在本地在SMS本地去调用它就相当于远程调用了。
04:19
刚才的这个user info里面的这个check mobile,好,那我们在本地这块还需要对这个代码啊进行一个完善,比如说刚才因为这是个接口嘛,所以刚才那个public就可以省略了啊,然后呢,这面我们是指定远程的微服务地址啊,这面呢,一定要指定这个微服务下面的一个完整的路径啊,那么它的完整的路径在哪呢?还是在刚才这个地方定义着的啊,除了这个径之外呢,我们还有一部分路径呢,是在这个类上定义的,叫API call user in for,所以呢,我们把它复制过来,然后还是复制到刚才我们的这个client里面,复制到这个位置啊,所以说呢,这样的话呢,这个接口的定义呢,就。
05:03
完整了啊就完整了,那这块呢,是我们的client的一个定义好,Client定义完了之后呢,咱们要在咱们代码这个相应的位置呢,去调用它,在哪调用它呢?前面我们分析了,我们希望在这个地方调用它,就是判断手机号是否已经注册,那所以呢,我们在上面这块呢,我们就把。Resource啊,要注入进来private,然后这块呢,我们就写这个how Co SE啊,Co啊,等会哈,看一下对吧?啊,Co user in for client Co user in for client好,然后接下来呢,我们用这个刚刚创建的这个Co user in for client去调用什么呢?去调用它刚才的那个接口方法叫check mobile,然后呢,我们把这个mobile呢传递给他,接下来呢,我们返回一个值啊,这面返回的是R对象,我们要从R当中呢,把这个内容取出来,那就R点,你得get一下data,然后呢,还得get,当时我们存的是叫result吧。
06:18
叫is exist是吧,存的是这个啊,所以呢,在这面我们呢,就把这个is exist代出来,这样的话就显得有点麻烦了,因为这个R实际上我们最终呢啊,其实是想返回前端的,但是现在这个方法呢,其实前端并不需要,然后是我们的微服内部调用的方法,所以一般情况下微服务内部调用这个方法呢,啊,不一定非要返回R,因为R对象是前后端接口的约定哈,所以如果是这样的话呢,我们前面这块。你就可以返回一个布尔值了。直接返回波尔就好了,如果直接返回波尔的话呢,那这边就不用写了啊,直接return就好了,明白哈,好,那如果这样的话呢,那大家想想我们这怎么改啊,就是刚才写的这个client,你是不是直接直接改成布尔就好了,好跟那边的返回值保持一致啊,那如果这块改成布尔的话,那么我们刚才调用这个地方是不是就变成布尔了。
07:19
你这块就变成过了,好然后这块呢,嗯,我们就写result吧,好然后下面这个地方呢,我们其实就直接拿到了这个result了啊,然后接下来呢,我们可以在我我在这个地方,为了方便哈,我们先打印一下,比如说那个log个点in哈,然后造一会可以看一下打印出来,好然后接下来呢,在下面这个位置呢,咱们assert。点is true is true什么呢?就是这个result,如果等于falses什么意思,就是我断言这个手机号没注册,明白吧?啊,我断言这个手机号没注册,如果没注册的话呢,就继续向下走发送验证码的流程,如果他注册了,跟我们现在断言的这个结果相反,那我们就好异常,所以呢,是对bus en.mobile existl就手机号已注册。
08:26
好,所以这块呢,就是这样的一个业务逻辑了啊,那我们现在呢,来对这个业务逻辑呢,进行一个测试。嗯,靠,要重启一下,然后SMS要重启一下。好,然后呢,把SMS再重启一下。
09:14
好,然后接下来呢,我在这个位置呢,进行一个测试哈,嗯,就前端直接测吧。啊,这边的我们手机号13766816630对吧,然后点击获取验证码。然后这块大家看是不是就是手机号已被注册呀,啊这样的话呢,我们就提前在啊,我们发送验证码之前就对这个手机号呢,是否注册进行了一个校验,那么这块呢,我们用到了我们的远程调用的一个功能啊。
我来说两句