自定义返回结果

    针对接口,微服务端返回结果如下:

    网关合并后,最终结果如下

    1. {
    2. "alipay_story_find_response": {
    3. "msg": "Success",
    4. "code": "10000",
    5. "name": "白雪公主",
    6. "id": 1,
    7. "gmtCreate": 1554193987378
    8. },
    9. "sign": "xxxxx"
    10. }

    其中alipay_story_find_response是它的数据节点。规则是:

    1. String method = "alipay.story.find";
    2. return method.replace('.', '_') + "_response";

    详见DefaultDataNameBuilder.java

    如果要更改数据节点,比如,可使用CustomDataNameBuilder.java

    设置后,网关统一的返回结果如下:

    1. "result": {
    2. ...
    3. },
    4. "sign": "xxxxx"
    5. }

    此外,构造方法可指定自定义字段名称:new CustomDataNameBuilder("data");。设置后,数据节点将变成data

    1. {
    2. "data": {
    3. ...
    4. },
    5. "sign": "xxxxx"
    6. }

    如果想要对微服务结果做更深一步处理,步骤如下:

    1. 新增一个类,继承ZuulResultExecutor.java,并重写方法

    方法merge参数说明如下:

    方法返回最终结果

    1. 配置自定义类
    1. public class SopGatewayApplication {
    2. public static void main(String[] args) {
    3. ApiConfig.getInstance().setZuulResultExecutor(new MyzuulResultExecutor());
    4. SpringApplication.run(SopGatewayApplication.class, args);
    5. }
    6. }

    不合并结果

    如果不希望对结果进行合并,可设置ApiConfig.getInstance().setMergeResult(false);

    1. public class SopGatewayApplication {
    2. public static void main(String[] args) {
    3. ApiConfig.getInstance().setMergeResult(false);
    4. SpringApplication.run(SopGatewayApplication.class, args);
    5. }
    6. }