当前位置: 首页 > 网络应用技术

Springboot如何统一返回格式?老鸟像这样玩了!

时间:2023-03-05 23:13:18 网络应用技术

  大家好,我是空灵。

  今天,让我们谈谈如何返回统一的标准格式以及如何在Springboot的分离开发模式下优雅地处理整体异常。

  首先,让我们看一下为什么应返回统一的标准格式?

  默认情况下,Springboot的返回格式有三种常见类型:

  第一个:返回字符串

  目前,呼叫接口获得的返回值是:

  第二:返回自定义对象

  目前,呼叫接口获得的返回值是:

  第三:接口异常

  目前,呼叫接口获得的返回值是:

  基于上述情况,如果您和前端开发人员的联合界面将非常积极。由于我们没有给他统一的格式,因此前端人员不知道如何处理回报价值。

  还有一些同学,例如张张喜欢封装结果,他使用结果对象,而小王也喜欢打包结果,但他使用了响应对象。当这种情况发生时,我相信前副手会发疯。

  因此,我们需要定义统一的标准返回格式。

  标准返回格式至少包含3个部分:

  当然,您还可以根据需要添加其他扩展。例如,我们将接口呼叫时间添加到返回对象

  目前,呼叫接口获得的返回值是:

  这确实取得了我们想要的结果。我在许多项目中看到的是写作。包装堆积层,并通过包装返回结果来返回到前端。

  让我们在这里停止思考。这样做的缺点是什么?

  最大的缺点是,每次我们编写界面时,我们都需要称呼这条代码来包装结果,重复劳动和浪费体力;而且很容易被其他老鸟嘲笑。

  因此,我们需要优化代码。目标不是每个接口都要手动制定返回值。

  优化此代码很简单。我们只需要使用Springboot的帮助即可。

  ResponseBodyAdvice:拦截控制器方法的返回值,均匀处理返回值/响应主体,通常用于均匀地返回格式,解密,符号等。

  让我们首先查看源代码:

  我们只需要编写特定的实施类

  您需要注意两个地方:

  必须添加此代码。如果控制器直接返回字符串,则直接返回Springboot,因此我们需要手动将其转换为JSON。

  在上述处理后,我们不再需要通过转换,而是直接返回原始数据格式。Springboot自动帮助我们实现包装类包装。

  在这一点上,我们将接口返回的数据::返回的数据

  它感觉很完美吗,不用担心,还有另一个问题在等您。

  目前有一个问题,因为我们没有处理控制器的异常,一旦我们称为异常的方法,就会存在问题,例如以下接口

  回报的结果是:

  这显然不是我们想要的结果。接口报告错误,并返回到成功运行的响应代码。前端将击中人们。

  不用担心,然后我们进入第二期,如何优雅地处理整体异常。

  处理异常

  我们追求的目标绝对不需要手动写作,而是由全球异常处理器处理。

  有三个细节要解释:

  目前,我们调用以下接口:

  回报的结果如下:

  基本上满足我们的需求。

  但是,当我们启用统一的标准格式包装功能和全局异常处理器时,发生了新的问题:

  此时返回的结果是。统一格式增强功能将再次封装在返回的异常结果中,因此我们需要下一步解决此问题。

  使全局异常访问标准格式变得简单,因为全局异常处理器帮助我们封装了标准格式,我们只需要直接返回客户端即可。

  关键代码:

  如果结果是ResultData对象,则只需返回即可。

  此时,我们调用上述错误方法,而返回结果满足我们的要求。

  好吧,今天在这里。我希望通过本文,您可以掌握如何在项目中实现统一的标准格式,以优雅地返回整体异常。

  旧鸟类系列的源代码已上传到GitHub,所需的公共帐户[Java Nikko]回复关键字0923获取