首頁  >  問答  >  主體

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上線後 再取消此臨時限制。

大家讲道理大家讲道理2734 天前550

全部回覆(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
  • 取消回覆