最近有一个老系统,需要替换,写了新项目接口,但无法获取所有正在使用的接口(全部修改有100多个),所以只从日志中分析出和的几个做了修改,剩下的出了一个方案,在新项目中找不到对应接口的情况下,会访问老系统去获取数据(新老系统并存)
新项目使用SpringBoot开发,超初使用拦截器修改失败,拦截到的response 已经被写入并关闭流,也就不能再修改写入的返回值,于是考虑用Filter去实现,发现对正常的请求(返回状态200)修改起来没有任何问题,但对于不存在的接口,Response中标记了ErrorState为1,所以即使再使用 response.setStatus(200) 也不能修改返回的内容,
最后使用了一个暴力的解法,用反射获取Response对象属性并修改其值,最终代码如下: