最近有一个老系统,需要替换,写了新项目接口,但无法获取所有正在使用的接口(全部修改有100多个),所以只从日志中分析出和的几个做了修改,剩下的出了一个方案,在新项目中找不到对应接口的情况下,会访问老系统去获取数据(新老系统并存)
新项目使用SpringBoot开发,超初使用拦截器修改失败,拦截到的response 已经被写入并关闭流,也就不能再修改写入的返回值,于是考虑用Filter去实现,发现对正常的请求(返回状态200)修改起来没有任何问题,但对于不存在的接口,Response中标记了ErrorState为1,所以即使再使用 response.setStatus(200) 也不能修改返回的内容,
最后使用了一个暴力的解法,用反射获取Response对象属性并修改其值,最终代码如下:
1 | import org.apache.catalina.connector.Response; |
这样虽然能实现功能,但感觉使用反射去实现还是不太好,目前还没有别的好办法先这样用着,反正主要是过滤有没有其它的接口调用,过段时间这段代码应该就可以不使用了。做为临时解决方案吧。
本文作者:
ixx
本文链接: http://blog.jisuye.com/2018/09/18/springboot-404-200/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
本文链接: http://blog.jisuye.com/2018/09/18/springboot-404-200/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!