大家好,我是空灵。
今天,让我们谈谈如何返回统一的标准格式以及如何在Springboot的分离开发模式下优雅地处理整体异常。
首先,让我们看一下为什么应返回统一的标准格式?
默认情况下,Springboot的返回格式有三种常见类型:
第一个:返回字符串
目前,呼叫接口获得的返回值是:
第二:返回自定义对象
目前,呼叫接口获得的返回值是:
第三:接口异常
目前,呼叫接口获得的返回值是:
基于上述情况,如果您和前端开发人员的联合界面将非常积极。由于我们没有给他统一的格式,因此前端人员不知道如何处理回报价值。
还有一些同学,例如张张喜欢封装结果,他使用结果对象,而小王也喜欢打包结果,但他使用了响应对象。当这种情况发生时,我相信前副手会发疯。
因此,我们需要定义统一的标准返回格式。
标准返回格式至少包含3个部分:
当然,您还可以根据需要添加其他扩展。例如,我们将接口呼叫时间添加到返回对象
目前,呼叫接口获得的返回值是:
这确实取得了我们想要的结果。我在许多项目中看到的是写作。包装堆积层,并通过包装返回结果来返回到前端。
让我们在这里停止思考。这样做的缺点是什么?
最大的缺点是,每次我们编写界面时,我们都需要称呼这条代码来包装结果,重复劳动和浪费体力;而且很容易被其他老鸟嘲笑。
因此,我们需要优化代码。目标不是每个接口都要手动制定返回值。
优化此代码很简单。我们只需要使用Springboot的帮助即可。
ResponseBodyAdvice:拦截控制器方法的返回值,均匀处理返回值/响应主体,通常用于均匀地返回格式,解密,符号等。
让我们首先查看源代码:
我们只需要编写特定的实施类
您需要注意两个地方:
必须添加此代码。如果控制器直接返回字符串,则直接返回Springboot,因此我们需要手动将其转换为JSON。
在上述处理后,我们不再需要通过转换,而是直接返回原始数据格式。Springboot自动帮助我们实现包装类包装。
在这一点上,我们将接口返回的数据::返回的数据
它感觉很完美吗,不用担心,还有另一个问题在等您。
目前有一个问题,因为我们没有处理控制器的异常,一旦我们称为异常的方法,就会存在问题,例如以下接口
回报的结果是:
这显然不是我们想要的结果。接口报告错误,并返回到成功运行的响应代码。前端将击中人们。
不用担心,然后我们进入第二期,如何优雅地处理整体异常。
处理异常
我们追求的目标绝对不需要手动写作,而是由全球异常处理器处理。
有三个细节要解释:
目前,我们调用以下接口:
回报的结果如下:
基本上满足我们的需求。
但是,当我们启用统一的标准格式包装功能和全局异常处理器时,发生了新的问题:
此时返回的结果是。统一格式增强功能将再次封装在返回的异常结果中,因此我们需要下一步解决此问题。
使全局异常访问标准格式变得简单,因为全局异常处理器帮助我们封装了标准格式,我们只需要直接返回客户端即可。
关键代码:
如果结果是ResultData对象,则只需返回即可。
此时,我们调用上述错误方法,而返回结果满足我们的要求。
好吧,今天在这里。我希望通过本文,您可以掌握如何在项目中实现统一的标准格式,以优雅地返回整体异常。
旧鸟类系列的源代码已上传到GitHub,所需的公共帐户[Java Nikko]回复关键字0923获取