登录

nginx可以修改repsonse的内容吗?

nginx支持这样的功能 即可以修改repsonse的内容吗?

比如刚开始接口返回的内容是这样

   "data" : {
      "totalAmount" : 49,  // 用户累积所中金额
      "remainingCount" : 3 // 当天剩余抽奖次数
   }

后面又增加了一个新的属性--总抽奖次数,于是想将之前的remainingCount改成更贴切的todayRemainingCount

      "todayRemainingCount" : 3 // 当天剩余抽奖次数
      "totalRemainingCount" : 10 // 总剩余抽奖次数

但是上线过程中服务端先上线, 接着H5再上线, 于是在此期间,H5会解析不到remainingCount,影响正常线上业务逻辑。

所以想在此期间通过nginx来做一下临时处理使得可以平滑升级, 如解析服务端接口基于todayRemainingCount自动创建一个remainingCount属性 这样可以兼容旧接口 如下所示

      "todayRemainingCount" : 3 // 当天剩余抽奖次数
      "remainingCount" : 3 // 当天剩余抽奖次数 兼容旧接口
      "totalRemainingCount" : 10 // 总剩余抽奖次数

等H5上线后 再取消此临时限制。

# Linux
大家讲道理大家讲道理1861 天前220 次浏览

全部回复(4) 我要回复

  • 怪我咯

    怪我咯2017-05-16 17:16:10

    可以,看看 https://openresty.org/en/
    你这种需求还是用程序作判断处理,或者多加个开关之类的比较好吧。
    线上的 nginx 也不会随便改配置。

    回复
    0
  • PHP中文网

    PHP中文网2017-05-16 17:16:10

    看你的需求,接口直接同时输出remainingCount和todayRemainingCount两项就可以了啊,调取接口的不管用哪个都能取到值,等你都部署好了之后再把接口返回的remainingCount去掉就行了

    回复
    0
  • PHP中文网

    PHP中文网2017-05-16 17:16:10

    同事给了一个解决方案。

    这是典型的接口模型该考虑的兼容。 不建议放到nginx上。比如:

    public class Output {
    
        private int todayRemaingCount;
        private int totalRemaingCount;
    
        // getter/setter methods;
    
        // 下一个版本升级,去掉此方法,预计在10.17。
        @Deprecated
        public int getRemainingCount() {
            return todayRemaingCount;
        }
    
    }
    

    回复
    0
  • PHP中文网

    PHP中文网2017-05-16 17:16:10

    还是在业务层做处理吧,不建议修改nginx

    回复
    0
  • 取消回复发送