最近部门统一api返回规范,由于各个部门使用的语言不一致,使用go语言的小伙伴觉得 response响应时,如果结构体是个空字符串或者信息量很小时,还需要手动构建一个结构体(原响应结构体{"code":x, "msg":x, "data":[xxxxx]}),不如直接在body中放data比较方便,将执行状态或者错误码直接放在header中。
出于与人方便,于是同意了,那么现有项目不可能对所有的结构体去做修改,也不可能在所有代码中添加对应信息,想到一个解决方案,就是采用filter进行处理。
直接上代码:
public class NovaResponseWrapper extends HttpServletResponseWrapper {
private ByteArrayServletOutputStream byteStream = new ByteArrayServletOutputStream();
public NovaResponseWrapper(HttpServletResponse response) {
super(response);
// TODO Auto-generated constructor stub
}
public byte[] getBytes() {
return byteStream.toByteArray();
}
/**
* 替换write 的输出流
*/
@Override
public PrintWriter getWriter() throws IOException {
// TODO Auto-generated method stub
return new PrintWriter(by