kotlin使用ResponseAdvice返回统一风格的json数据
开发中经常会遇到需要统一返回错误码或者错误信息,虽然可以用restful形式编程,复用http status code状态码来当作错误码,但是仍然会有很多的限制。因此很多情况下我们会定义成一种统一的json格式来处理返回值。比如:
例子
有一个Controller如下所示
该下有一个的接口,返回一个类,类有两个属性,与。
启动项目后访问可以得到如下返回值
普通的实现方式
直接修改这个方法
新定义一个类
修改接口的返回值
重启服务并且访问可以得到如下返回值:
可以发现这种是实现了文章开头的返回格式的。
但是这种实现方式有一个很严重的问题是,每增加一个接口都需要加上一些格式化代码。这样会造成大量的冗余代码的出现。而且如何以后重构代码时希望去掉这种格式的返回值的话,每一个接口都需要删除掉代码。
使用ResponseBodyAdvice的实现方式
spring4.1中引入了接口,继承这个接口可以很容易的实现格式化返回值的需求。
新增一个继承
重启服务并且访问可以得到如下返回值:
可以发现返回值也实现了文章开头需要的格式。
这种方式的优势在于,Controller层无耦合,可以进行方便的重构。
总结
当需要对返回值进行统一的处理时,可以使用来统一实现。免去了每一个Controller每一个接口都进行修改的问题。
思考
使用虽然可以实现正常流程的返回值格式化。但是并没有实现党业务抛出异常时以及正常的业务出错时与需要返回相应的错误代码。该如何实现呢?
领取专属 10元无门槛券
私享最新 技术干货