本篇概览
-
Spring Cloud Gateway应用中,处理请求时若发生异常未被捕获,请求方收到的响应是系统默认的内容,无法满足实际业务需求
-
因此,从前一篇文章《Spring Cloud Gateway过滤器精确控制异常返回(分析篇)》开始,咱们深入分析了Spring Cloud Gateway的相关源码,了解到全局异常的处理细节,然后,通过前文《SpringCloudGateway过滤器控制异常返回(返回码和message字段)》的实战,咱们已经能随意设置http返回码,以及body中的message字段,也就是控制下图两个红框中的内容:
-
正如上图所示,异常发生时系统固定返回8个字段,这就有些不够灵活了,在一些对格式和内容有严格要求的场景下,咱们需要能够完全控制返回码和返回body的内容,如下所示,只返回三个字段,每个字段都是完全为业务服务的:
{ # 这是有具体业务含义的返回码 "code": "010020003", # 这是能精确描述错误原因的文本信息 "message": "请确保请求参数中的user-id字段是有效的", # 这是常规的业务数据,发生异常时该字段为空 "data": null }
-
今天咱们的目标就是通过编码定制异常发生时的返回信息,具体内容就是上述JSON数据:只有code、message、data三个字段
源码下载
-
本篇实战中的完整源码可在GitHub下载到,地址和链接信息如下表所示(https://github.com/zq2599/blog_demos):
-
这个git项目中有多个文件夹,本篇的源码在spring-cloud-tutorials文件夹下,如下图红框所示:
-
spring-cloud-tutorials文件夹下有多个子工程,本篇的代码是gateway-change-body,如下图红框所示:
图片上传失败
重试
为何不用常规手段
-
提到全局异常处理,经验丰富的您应该想到了常用的ControllerAdvice和ExceptionHandler注解修饰的全局异常处理类,但是Spring Clou