java 报文配置spring_从零搭建Spring Cloud Gateway网关(三)——报文结构转换

本文介绍了如何在Spring Cloud Gateway中实现报文结构转换。通过配置URL和转换规则,利用接口和抽象类处理不同类型的报文,实现了动态修改报文结构的功能。
摘要由CSDN通过智能技术生成

背景

作为网关,有些时候可能报文的结构并不符合前端或者某些服务的需求,或者因为某些原因,其他服务修改报文结构特别麻烦、或者需要修改的地方特别多,这个时候就需要走网关单独转换一次。

实现

话不多说,直接上代码。

首先,我们定义好配置:

package com.lifengdi.gateway.properties.entity;

import lombok.Data;

import org.springframework.util.CollectionUtils;

import java.util.*;

/**

* 需要转换报文结构的URL地址配置类

*

* @author: Li Fengdi

* @date: 2020-7-11 16:57:07

*/

@Data

public class MessageTransformUrl {

// 接口地址,多个地址使用英文逗号分隔

private String[] paths;

/**

*

格式

*

新字段:老字段

*

若新老字段一致,可以只配置新字段

*/

private List fields;

/**

*

返回体类型,默认为json

*

可配置的类型参见{@link com.lifengdi.gateway.enums.TransformContentTypeEnum}

*

如需自定义配置,可以继承{@link com.lifengdi.gateway.transform.AbstractMessageTransform}类,

* 或者实现{@link com.lifengdi.gateway.transform.IMessageTransform}接口类,重写transform方法

*/

private String contentType;

private Set pathList;

public Set getPathList() {

if (CollectionUtils.isEmpty(pathList) && Objects.nonNull(paths)) {

setPathList(new HashSet<>(Arrays.asList(paths)));

}

return pathList;

}

}

package com.lifengdi.gateway.properties;

import com.lifengdi.gateway.properties.entity.MessageTransformUrl;

import lombok.Data;

import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.stereotype.Component;

import java.util.List;

/**

* 报文结构转换参数配置

* @author: Li Fengdi

* @date: 2020-7-11 16:55:53

*/

@Component

@ConfigurationProperties(prefix = "trans")

@Data

public class MessageTransformProperties {

private List urlList;

}

在yaml文件中的配置如下:

# 报文转换配置

trans:

url-list:

- paths: /jar/api/cockpit

content-type: application/json

fields:

# 新字段:老字段,若新老字段一致,可以只配置新字段

- code:rs

- msg:rsdesp

- data:resultMessage

- paths: /war/api/delivertool

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值