spring boot返回統一處理

spring boot返回統一處理

/**
 * 統一的返回信息處理
 */
@SuppressWarnings({ "rawtypes" })
@RestControllerAdvice("com.wuxin")
public class MyResponseBodyAdvice implements ResponseBodyAdvice<Object> {

	/**
	 * 不需要加的通過這裏進行排除
	 */
	private static Set<String> excludeSetClass = new HashSet<String>();
	private static Set<String> excludeSetMethod = new HashSet<String>();

	static {
		excludeSetMethod.add("com.wuxin.action.wxmini.WechatPayAction.payNotify");
		excludeSetMethod.add("com.wuxin.action.wxmini.WechatPayAction.refundNotify");
	}

	@Override
	public boolean supports(MethodParameter returnType, Class converterType) {
		/**
		 * 類
		 */
		if (excludeSetClass.contains(returnType.getMethod().getDeclaringClass().getName())) {
			return false;
		}
		
		/**
		 * 方法
		 */
		String method = returnType.getMethod().getDeclaringClass().getName() + "." + returnType.getMethod().getName();
		if (excludeSetMethod.contains(method)) {
			return false;
		}
		return true;
	}

	@Override
	public Object beforeBodyWrite(Object returnValue, MethodParameter methodParameter, MediaType selectedContentType,
			Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
		if (ResData.class.isInstance(returnValue)) {
			return returnValue;
		} else if (String.class.isInstance(returnValue)) {
			return JsonUtil.toJSon(ResData.ok(returnValue));
		}
		return ResData.ok(returnValue);
	}
}

/**
 * 接口統一返回的對象
 *
 */
@ApiModel("接口統一返回的對象")
public class ResData {

	/**
	 * 響應業務狀態碼0:成功,非0:失敗
	 */
	@ApiModelProperty("響應業務狀態碼0:成功,非0:失敗")
	private int code;

	/**
	 * 響應信息
	 */
	@ApiModelProperty("調用接口失敗時返回的錯誤信息")
	private String msg;

	/**
	 * 響應業務數據
	 */
	@ApiModelProperty("調用接口成功時返回的數據")
	private Object data;

	/**
	 * 默認構造函數
	 */
	public ResData() {
	}

	public ResData(int code, String msg) {
		this.code = code;
		this.msg = msg;
	}

	public static ResData ok(Object data) {
		ResData res = new ResData(0, "success");
		res.setData(data);
		return res;
	}

	public static ResData fail(String msg) {
		ResData res = new ResData(-1, msg);
		return res;
	}

	public static ResData fail(int code, String msg) {
		ResData res = new ResData(code, msg);
		return res;
	}

	public String getMsg() {
		return msg;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}

	public Object getData() {
		return data;
	}

	public void setData(Object data) {
		this.data = data;
	}

	public int getCode() {
		return code;
	}

	public void setCode(int code) {
		this.code = code;
	}

	@Override
	public String toString() {
		return "ResData [code=" + code + ", msg=" + msg + ", data=" + data + "]";
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章