00:00
好,前面呢,我们引入了swa,目的呢就是方便我们进行项目的测试,那接下来呢,为了方便我们前后端的交互,我们希望呢,为前端返回一个标准的统一的响应结果,所以呢,我们来引入一个统一结果,那么我们在我们的。项目的核心包下面。定义一个package。好,这个package呢,我们给它起个名字叫value object啊这个。Value,嗯,叫值对象,好,那在这个VO里面呢,我们创建一个R,它呢就是封装需要在页面,或者是需要交给前端的各种各样的啊一些数据,那么我们需要交给前端的标准数据呢,包括响应码。In,我们给它起个名字,比如说就叫cold,这个是我们的响应嘛,好,然后接下来呢,我们再定义第二个字串类型的响应消息。
01:16
好,接下来呢,我们再定义第三个。那第三个呢,为了灵活,我们呢给它定义成哈希,那么里面呢,可以存各种各样类型的数据,我们管它叫data。为了方便,我们直接呢把这个data创建出来。好把它实例化出来,然后接下来呢,我们在我们的项目的依赖当中引入一个工具,这个工具呢叫longbo。好,Long b这个工具呢,它可以帮助我们简化实体类的开发,那么帮助我们自动生成像get方法,Set方法,还有各种各样的构造函数,午餐有餐to string、哈希方法等等等等,都可以借助于long里面提供的非常方便的注解来生成,所以呢,我们把它引一下,那么这个依赖呢,名字就叫做long啊。
02:22
好,然后它上面的这个地址呢,应该是org.project long box就是这个,那么longbo的版本呢,实际上是被spring已经统一管理了,所以这个地方呢,我们就不需要写版本号了。然后我们面当中刷新一下,确保这个呢已经被加载进来了,那么如果你的版本比较旧的话,应该是2019之前,那么大家就需要在。我们的settings plug ins里面去安装一个long box插件。
03:01
好,就是这个插件啊,但是呢,目前为止很多同学使用的idea版本呢,还是比较新的,所以呢,Idea当中已经集成了这个longb插件,那我们就不用安装了,那你在开发之前呢啊,需要检查一下你的idea有没有这个插件,如果没有的话呢,就需要安装一下。接下来呢,我们就可以在我们刚才创建的二对象上使用long box注解了,那么我们在这面呢定义一个。Get,那么大家可以看一下它的structure啊,就是这个类它会自动生成呢,Get方法,那么如果你定义一个,那么它呢,就会自动生成set方法,好,如果你定义一个data,那么它生成的内容呢就比较多了,还包括呢,Get方法,Set方法,还包括equals呀,嗯,还有什么哈西呀,To string呀,它都会生成,另外呢,还有一个午餐的构造函数。
04:05
那这个就是我们的long box的啊,这样的一些注解的一个基本的使用,所以它可以帮助我们极大的简化我们的实体类的开发,然后接下来呢,为了啊,方便使用这个对象啊,因为我们在controller里面,最后呢,其实我们要返回的并不是这个string,而是刚才这个R,那我们如何返回R呢?在这面我们一定要创建这个R对象,对不对?那所以呢,我们先写这个静态方法啊,方便我们后期对这个R对象的调用,我们先写一个返回正确结果的静态方法,叫做OK方法,那我们希望呢,我们在我们的应用程序当中,一旦呢,调用了刚才的2.ok的话,因为那是一个静态方法,所以我们可以直接调用,那么呢,就可以得到一个成功的结果,所以在这个OK方法当中呢,我们就拗一个二对象,然后。
05:06
呢,给这个二对象呢,设置一个成功的。返回的响应码,那么我们定义呢,成功的响应码是零,好,然后接下来呢,我们再定一个通用的。成功消息,然后最后呢,我们把这个给他返回,因为我们整个的项目实际上核心业务是支付业务啊,所以这种二对象呢,在实际的这个项目场景下呢,可能要更为复杂一些,那么在咱们当前的这个支付案例当中呢,我们就给他做了一个简化。好,接下来呢,我们再参考着这个R。的OK方法,在给他补充一个A方法,也就是说当我们返回错误的结果的时候呢,我们希望它的响应码是负一,然后它的响应消息呢是失败,那这样的话呢,我们就会非常方便的返回一个错误的结果。
06:07
接下来呢,我们在最后,因为我们的这个类里面呢,还定义了一个,那这个呢,就是如果你在接口这面想给前端返回具体的数据的话,比如说一个商品列表啊,一个订单号等等等等,那我们呢,希望通过这个data数据呢,给前端进行数据的传输,那所以在这面呢,我们定义一个。返回R的方法,好,然后这个方法呢,其实呢,就是要给这个data赋值,那为了方便呢,我们去接收一个key,通过一个key和一个value给我们的赋值。我们这边写点点put,然后通过设置value。
07:06
然后最后我们返回这个this。这样的话呢,一个简化版本的R对象我们就定义成功了,那么在controller这个地方就返回一个r.OK就可以了。那如果你想给前端返回具体的数据的话,比如说返回一个字符串,那么我们可以根据刚才我们定义的这个data方法设置一个具体的键message。Hello,就可以了,那如果你想返回更多的数据的话,你还可以这样写啊,这就是一个链式操作,因为刚才我们的这个R里面,Data方法的返回值也是R,所以通过这种方式呢,我们可以定义一个可以链式操作的方法,那我们再来返回一个数据,比如说我想返回当前的时间叫now。
08:02
好。这样呢,我们就把刚才我们写的测试接口呢,进行了一个改造。我们来重新启动一下这个服务。好,启动成功了之后呢,我们来。重新的测试一下我们的test方法。我们来看一下这面返回的呢,就是刚才我们定义的同一结果了,那这个里面呢,有code,有message,还有刚才我们定的data,那data呢是一个键值对,这里面呢,有两个键值对,第一个呢是当前时间,这里面显示的是当前时间,第二个呢是message,这里面显示的是消息,那这个当前时间呢,我们可以给它进行一个定义啊,那另外呢,其实这个时间啊,显示的这个时和我现在实际的时间的时呢,也不太一致,所以呢,为了把这个时间显示成一个正确的时间格式呢,我们需要在。
09:10
配置文件当中。为我们Jason返回的这个时间格式做一个具体的定义,那么它的具体的方式呢,就是在这面有一个叫Jackson啊,然后data format data format这块根据我们的实际需要,比如说我们可以把它定义成年月。然后小写的D是日,然后大写的H,这是十,接下来呢分MM,最后秒SS,好,这是我们定义的时间格式,然后接下来呢,我们再定一个时区叫time z,那现在我们这块是东八区,所以是GMT加八,那最后呢,我们再重新启动一下这个项目。
10:00
好,现在呢,我们来到当中测试一下刷新。那我们看一下test当中点击try it out。你会发现呢,这一次时间呢,就显示成了正确的时间格式。
我来说两句