背景
使用Spring Cloud Gateway作为网关时有时候一个请求是既包含excel又包含json的表单数据,出于各种层面考虑网关需要获取并更新其中的json数据
依赖
- Spring Boot版本:2.7.15
- Hutool: 5.8.21
- Java: 11
实现逻辑
实现分为2个部分
- 使用上文提到的ModifyRequestBodyGatewayFilterFactory类来修改请求体,这样最后就不用我们手动包装
- 核心service通过将表单转为String,然后根据其中的boundary进行分割,提取修改json报文部分后再进行组装
注意:示例代码的核心service处理的表单内容只是2个,Json数据的key指定为json,另一个excel文件流
自定义filter
1 |
|
核心service
1 |
|
相关代码
https://github.com/eastcukt/demo-gatway
其他
核心service获取表单中的json数据逻辑挺复杂,根本原因是没有合适的方法进行对象转换,如果有像使用@RequestPart(value = “json”)注解一样方便的方法将会非常方便也不用自己截取,各位大佬有更方便的方法感谢分享一下