项目组用了 Spring MVC 进行开发,觉得对里面的使用方式不是很满意,就想,如果是我来搭建开发环境,我会怎么做?下面就是我的想法,只关注于 MVC 的 View 层。
一、统一的响应格式
现在基本上都是用 ajax 来调用后台接口,拿到 json格式的数据再展示,有的人直接返回数据,却没有考虑异常的情况,我觉得返回的报文里必须包含表示可能的异常信息的数据和业务响应数据。我定义了下面这个类来表示报文格式:
/**
* 统一的 HTTP 响应格式。<br/>
* code 为 "ok" 表示业务调用成功,否则是失败的错误码,如果有多个则以逗号分隔。<br/>
* data 是业务数据,如果失败了则是 null。
*
* @author http://coderbee.net
*
*/
public class RespBody {
public static final String OK_CODE = "ok";
private final String code;
private final Object data;
private static final RespBody OK = new RespBody(OK_CODE, null);
private RespBody(String code, Object data) {
this.code = code;
this.data = data;
}
public static RespBody ok() {
return OK;
}
public static RespBody ok(Object data) {
return new RespBody("ok", data);
}
public static RespBody error(String code) {
return new RespBody(code, null);
}
public static RespBody error(String code, Object msg) {
return new RespBody(code, msg);
}
public String getCode() {
return code;
}
public Object getData() {
return data;
}
}
这个类提供了一些静态方法来快速构建响应报文,这也是很重要的一个设计:用静态工厂方法而不是构造函数。
这里的 code
不应该是直接的错误提示信息,应该只是简单的错误编码,这样不同的客户端都可以调用这个 API,然后再根据错误编码、客户端语言和自己的客户端特性选择合适的错误提示信息和提示方式。