这是我认为比较好用的方式,如果有需要,我会再上其他类型编写的工具类。
其实只是为了封装,大家可以自己改善这个代码,变成更好的。
1. 在pom文件中加入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.30</version>
</dependency>
2. RestResult.java
package cn.cz.po;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.PascalNameFilter;
/**
* @author Administrator
* @DESCRIPTION 统一API响应结果封装
*/
public class RestResult {
public void setCode(int code) {
this.code = code;
}
private int code;//状态码
private String message;//消息
private Object data;//数据
public RestResult setCode(ResultCode resultCode) {
this.code = resultCode.code();
return this;
}
public int getCode() {
return code;
}
public String getMessage() {
return message;
}
public RestResult setMessage(String message) {
this.message = message;
return this;
}
public Object getData() {
return data;
}
public RestResult setData(Object data) {
this.data = data;
return this;
}
@Override
public String toString() {
return JSON.toJSONString(this);
}
}
3. ResultCode.java
package cn.cz.po;
/**
* @author Administrator
* @DESCRIPTION 响应码枚举,参考HTTP状态码的语义
*/
public enum ResultCode {
SUCCESS(200),//成功
FAIL(400),//失败
UNAUTHORIZED(401),//未认证(签名错误)
NOT_FOUND(404),//接口不存在
INTERNAL_SERVER_ERROR(500);//服务器内部错误
private final int code;
ResultCode(int code) {
this.code = code;
}
public int code() {
return code;
}
public int getCode() {
return code;
}
}
4. ResultGenerator .java
@Component这个文件有注解,请在配置的时候注意扫包
package cn.cz.realm;
import cn.cz.po.RestResult;
import cn.cz.po.ResultCode;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
/**
* 工厂模式
* 接口信息生成工具
* 。@Component 添加到Spring组件中
*/
@Component
public class ResultGenerator extends RestResult{
private static final String SUCCESS = "success";
RestResult restResult=new RestResult();
//成功
public RestResult getSuccessResult() {
return new RestResult()
.setCode(ResultCode.SUCCESS)
.setMessage(SUCCESS);
}
//成功,附带额外数据
public RestResult getSuccessResult(Object data) {
return new RestResult()
.setCode(ResultCode.SUCCESS)
.setMessage(SUCCESS)
.setData(data);
}
//成功,自定义消息及数据
public RestResult getSuccessResult(String message,Object data) {
return new RestResult()
.setCode(ResultCode.SUCCESS)
.setMessage(message)
.setData(data);
}
//失败,附带消息
public RestResult getFailResult(String message) {
return new RestResult()
.setCode(ResultCode.FAIL)
.setMessage(message);
}
//失败,自定义消息及数据
public RestResult getFailResult(String message, Object data) {
return new RestResult()
.setCode(ResultCode.FAIL)
.setMessage(message)
.setData(data);
}
//自定义创建
public RestResult getFreeResult(ResultCode code, String message, Object data) {
return new RestResult()
.setCode(code)
.setMessage(message)
.setData(data);
}
}