前言
还记得之前做个小应用的时候需要返回
json
数据给前台。那时候只需要判断验证是否成功,如果不成功就返回message
消息。并没有虑到返回数据,数据则是存入相应的域之中。随着做的业务复杂上升,接触的东西多了之后,那么我们所做的项目就需要前后台分离,或者所使用的接口当中都需要返回相应的状态、消息、数据。如何实际一个高可用的服务器响应类呢?今天就来总结下我是用过的一些服务器响应类吧。
演变
开始的开始
最开始如何写一个服务器响应类呢?请求返回数据给前台ajax
调用验证使用。
最直接的想法是一个状态status
该请求需要验证的内容是否正确(成功),message
根据状态返回相应的提示性描述语句。
这是最开始我做东西时候最直观的想法吧,可能你会说到如果需要返回数据呢?我的回答是没有,数据都是放入requestScope
当中,返回modelAndView
。现就开看看这个代码吧。
创建一个类作为响应对象,就叫做ExecuteResult
1 | /** |
有点简陋,但是可以避免在代码当中重复写 String result = " "
等内容。就算做是一种进步吧,现在看看如何使用呢。
1 | "/deleteUser") ( |
这里是一个删除用户的的方法,只是将用户状态修改,然后返回一个封装了的ExecuteResult
告诉前台ajax调用,得到json
数据中status
为true
,Message
为删除成功
。
进步,能够返回数据
但是上面有问题,如果我们需要返回数据怎么办呢?最简单方法是在ExecuteResult
这个封装类当中添加一个属性T data
作为一个泛型返回,使用的时候后封装一个VO
将需要返回的属性或者对象放入其中,然后将这个VO
对象最为ExecuteResult
中的属性T data
进行返回。
那么上面的ExecuteResult
就成了这样的了。
1 | /** |
使用时候直接返回所需要的VO
对象(dto
)就行了。(dto
是展示层和服务层之间传输数据的对象,对于绝大部分应用场景而言dto
和vo
属性一致,也就是pojo
,这是实现层面的思想,对于设计层面而言,它们又担负着不同的角色).
通用,再次封装
绝大部分场景我们能够上面那样,但是status
和message
容易写成硬编码,如何对status和message进行封装呢,针对于不同的服务器状态返回不同的描述性语言,同时服务器还能够返回不同的数据。
联系
聪聪的独立博客 ,一个喜欢技术,喜欢钻研的95后。如果你看到这篇文章,千里之外,我在等你联系。