TCSF中的api接口都是基于http协议,http协议定义了400,404,200,500等http响应码。
但对于业务场景http响应码并不十分适用,TCSF基于Http协议定义了一套自己的接口响应标准。
对于网页的请求,浏览器只能识别http响应码。而对于json形式的api接口,TCSF规定,统一返回ApiResponseEntity对象序列化json。
public class ApiResponseEntity<T> {
/*业务响应码*/
private String code;
/*业务响应消息*/
private String message;
/*业务响应体*/
private T body;
}
如上列出了ApiResponseEntity的字段,每一个api响应,都应该包含业务响应码code和业务响应描述消息message,如果需要响应数据到客户端,则通过泛型来定义业务响应体body。
对于code的定义如下:
public enum ApiStatusCode {
OK, // 成功
NOT_FOUND, // 未找到
UNAUTHORIZED, // 未登录
PERMISSION_DENIED, // 没有权限
ILLEGAL_ARGUMENT, // 请求参数错误
FAILED // 失败
}
为了使代码更加简洁,在ApiResponseEntity中封装了多个build*方法。
public static <T> ApiResponseEntity<T> buildOK();
public static <T> ApiResponseEntity<T> buildOK(String message);
public static <T> ApiResponseEntity<T> buildFailed();
public static <T> ApiResponseEntity<T> buildFailed(String message);
public static <T> ApiResponseEntity<T> buildNotFound();
public static <T> ApiResponseEntity<T> buildNotFound(String message);
public static <T> ApiResponseEntity<T> buildUnauthorized();
public static <T> ApiResponseEntity<T> buildUnauthorized(String message);
public static <T> ApiResponseEntity<T> buildPermissionDenied();
public static <T> ApiResponseEntity<T> buildPermissionDenied(String message);
public static <T> ApiResponseEntity<T> buildIllegalArgument();
public static <T> ApiResponseEntity<T> buildIllegalArgument(String message);
通过这些build*方法可以快速构建一个ApiResponseEntity对象,并且ApiResponseEntity支持链式调用
@ResponseBody
@RequestMapping(value ="get", method = RequestMethod.GET)
public ApiResponseEntity get() {
return ApiResponseEntity.buildOK("成功").setBody(result);
}